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

Pythonで二乗配列の数を見つけるプログラム


小文字のターゲット文字列を作成するとします。最初は、シーケンスはn'?'です。マーク(nはターゲット文字列の長さ)。小文字のスタンプもあります。各ターンで、シーケンスの上にスタンプを配置し、内のすべての文字をそのスタンプの対応する文字に置き換えることができます。最大10*nターンまで作成できます。

例として、最初のシーケンスが「?????」で、スタンプが「abc」であるとすると、最初に「abc ??」、「?abc?」、「??abc」のような文字列を作成できます。振り向く。シーケンスにスタンプを付けることができる場合は、各ターンで左端の文字がスタンプされているインデックスの配列を返します。それが不可能な場合は、空の配列を返します。したがって、シーケンスが「ababc」で、スタンプが「abc」の場合、答えは[0、2]のようになります。これは、「?????」のように形成できるためです。 ->「abc??」 ->「ababc」。

したがって、入力がs ="abcd" t ="abcdbcd"の場合、出力は[3,0]

になります。

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

  • sのサイズが1と同じ場合、

    • t内のすべての文字が同じで、それらがs [0]の場合は、0からtまでのリストを返します。それ以外の場合は、新しい空白のリスト

  • ans:=新しいリスト

  • 一方、tは「?」のt数のサイズと同じではありません。マーク、実行

    • tmp:=t

    • 0からsのサイズの範囲のiの場合、実行します

      • sのサイズがi+1までのjの場合:

        • 検索:=「?」の数sの部分文字列を連結します[インデックスiからj-1まで]連結します(sのサイズ-j)「?」の数

        • 検索がtにある間、実行します

          • ansの最後のtに検索が存在する場所に挿入

          • t:=検索をs個の「?」のサイズに置き換えます一度だけ

        • tが「?」のt数のサイズと同じである場合、

          • ループから出てきます

        • tが「?」のt数のサイズと同じである場合、

          • ループから出てきます

      • tmpがtと同じ場合、

        • ループから出てきます

  • ansの逆を返します。

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

def solve(s, t):
   if len(s) == 1:
      return [i for i in range(len(t))] if all(t==s[0] for t in t)else []

   ans = []
   while t != "?" * len(t):
      tmp = t
      for i in range(len(s)):
         for j in reversed(range(i+1, len(s)+1)):
            search = "?" * i + s[i:j] + "?" * (len(s)-j)
            while t.find(search) != -1:
               ans.append(t.find(search))
               t = t.replace(search, "?"*len(s), 1)
            if t == "?" * len(t): break
         if t == "?" * len(t): break
      if tmp == t: return []
   return ans[::-1]

s = "abcd"
t = "abcdbcd"
print(solve(s, t))

入力

"abcd", "abcdbcd"

出力

[3,0]

  1. リスト内の最小数を見つけるPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −リストが表示されます。リストで利用可能な最小の番号を表示する必要があります ここでは、リストを並べ替えて最小の要素を取得するか、組み込みのmin()関数を使用して最小の要素を取得できます。 次に、以下の実装の概念を観察しましょう- 例 list1 = [101, 120, 104, 145, 99] # sorting using built-in function list1.sort() print("Smallest element is:", list1[0]) 出力 Smal

  2. Pythonプログラムで数の偶数因子の合計を見つける

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −数値が与えられているので、数値のすべての偶数因子の合計を表示する必要があります。 アプローチ 数値が奇数かどうかを確認し、偶数の因子がないため、0を返します。 数が偶数の場合、計算を実行します。 20を除く他のすべての項は、偶数の因数の合計を生成するために乗算されます。 偶数因子のすべての奇数を削除するために、1である20を無視します。このステップの後、偶数因子のみを取得しました。 2は私たちが利用できる唯一の素数であることに注意してください。 次に、以下の実装を見てみましょう- 例 # math