Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで単調な文字列グループの最小数を見つけるプログラム


小文字の文字列sがあるとします。各部分文字列が増加しないか減少しないように、sが部分に分割される連続する部分文字列の最小数を見つける必要があります。したがって、たとえば、文字列が「pqqqr」のように減少しない文字列であり、「qqqp」が増加しない文字列である場合。

したがって、入力がs ="pqrsrqp"のような場合、出力は2になります。これは、"pqrs"や"rqp"のようなsを壊すことができるためです。

これを解決するには、次の手順に従います-

  • sが空の場合、

    • 0を返す

  • 最後:=s [0]

  • 方向:=1

  • カウント:=1

  • sの各文字について、実行します

    • char> lastの場合、

      • 方向が1と同じ場合、

        • 方向:=0

      • それ以外の場合、方向が2と同じ場合、

        • 方向:=1

        • count:=count + 1

    • それ以外の場合、char

      • 方向が1と同じ場合、

        • 方向:=2

      • それ以外の場合、方向が0と同じ場合、

        • 方向:=1

        • count:=count + 1

    • 最後:=char

  • 返品数

理解を深めるために、次の実装を見てみましょう

def solve(s):
   if not s:
      return 0

   last = s[0]
   direction = 1
   count = 1

   for char in s:
      if char > last:
         if direction == 1:
            direction = 0
         elif direction == 2:
            direction = 1
            count += 1
      elif char < last:
         if direction == 1:
            direction = 2
         elif direction == 0:
            direction = 1
            count += 1
      last = char

   return count

s = "pqrsrqp"
print(solve(s))

入力

"pqrsrqp"

出力

2

  1. Pythonでマージした後も、最小数の色を見つけるプログラムが残っています

    色のリスト(R、G、B)があるとします。これで、2つの異なる色が隣り合っている場合、それらは3番目の色の単一の色のアイテムに変換できます。そのような変換の可能なシーケンスの後に残っているそれらの最小数を見つける必要があります。 したがって、入力がcolors =[G、 R、 G、 B、 R]の場合、以下のように変換できるため、出力は1になります- これを解決するには、次の手順に従います- n:=色のサイズ 色に異なる色が1つしかない場合は、 return n n <=1の場合、 return n x:=0 d:=キーと値のペアを持つマップ{( R、1)、(

  2. 数の因子の最小合計を見つけるためのPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します- 問題の説明 入力された数値を指定して、指定された数値の因子の最小合計を求めます。 ここでは、すべての因子とそれに対応する合計を計算し、それらの中から最小値を見つけます。 したがって、数の積の最小合計を見つけるために、積の素因数の合計を見つけます。 これが問題の反復実装です- 例 #iterative approach def findMinSum(num):    sum_ = 0    # Find factors of number and add to the sum