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

連結がPythonのターゲットと同じサブシーケンスの最小数を見つけるプログラム


sourceとtargetの2つの文字列があるとすると、それらを連結した場合にtargetと同じになるように、作成できるsourceのサブシーケンスの最小数を見つける必要があります。そのような結果がない場合は、-1を返します。

したがって、入力がsource ="xyz" target ="xyzyzz"のようである場合、これらの["xyz" + "yz" + "z"]

を連結できるため、出力は3になります。

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

  • s_size:=sのサイズ、t_size:=tのサイズ
  • concat_count:=0、target_idx:=0
  • target_idx
  • source_idx:=0
  • temp_index:=target_idx
  • source_idx
  • s[source_idx]がt[target_idx]と同じ場合、
    • target_idx:=target_idx + 1
  • source_idx:=source_idx + 1
  • temp_indexがtarget_idxと同じ場合、
    • 戻り値-1
  • concat_count:=concat_count + 1
  • concat_countを返す
  • 理解を深めるために、次の実装を見てみましょう-

    class Solution:
       def solve(self, s, t):
          s_size, t_size = len(s), len(t)
          concat_count = 0
          target_idx = 0
          while target_idx < t_size:
             source_idx = 0
             temp_index = target_idx
    
             while source_idx < s_size and target_idx < t_size:
                if s[source_idx] == t[target_idx]:
                   target_idx += 1
                source_idx += 1
    
             if temp_index == target_idx:
                return -1
             concat_count += 1
          return concat_count
    ob = Solution()
    source = "xyz"
    target = "xyzyzz"
    print(ob.solve(source, target))

    入力

    "xyz", "xyzyzz"

    出力

    3

    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