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

Pythonで特定の制約を使用して、ある文字列を別の文字列に変換できるかどうかを確認します


「A」、「B」、「#」の3文字のみの2つの文字列sとtがあるとします。 sに対してこれらの操作を実行することにより、sをtに変換できるかどうかを確認する必要があります。

  • 「A」は左側にのみ移動できます
  • 「B」は右側にのみ移動できます
  • 「A」も「B」も互いに交差することはできません

したがって、入力がs ="## AB ## B" t ="A ### B#B"の場合、出力はTrueになります。これは、s Aが左端の位置に簡単に移動でき、中央のBが簡単に移動できるためです。右に1ステップ移動できます

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

  • s:=sから文字を取得したリスト
  • t:=tから文字を取得したリスト
  • sのサイズがtのサイズと同じでない場合、
    • Falseを返す
  • sとtの「A」の数が異なる場合、またはsとtの「B」の数が異なる場合、または
    • Falseを返す
  • 範囲0からs-1のサイズのiの場合、do
    • s [i]が'#'と同じでない場合、
      • 範囲0からt-1のサイズのjの場合、do
        • (t[j]がs[i]と同じではない)およびt[j]が「#」と同じでない場合
          • Falseを返す
        • t[j]がs[i]と同じ場合、
          • t [j]:='#'
          • s[i]が'A'と同じでi
          • Falseを返す
        • s[i]が'B'およびi>jと同じである場合、
          • Falseを返す
        • ループから抜け出す
  • Trueを返す
  • 理解を深めるために、次の実装を見てみましょう-

    def solve(s, t):
       s = list(s)
       t = list(t)
       if len(s) != len(t):
          return False
       if s.count('A') != t.count('A') or s.count('B') != t.count('B'):
          return False
       for i in range(len(s)):
          if s[i] != '#':
             for j in range(len(t)):
                if (t[j] != s[i]) and t[j] != '#':
                   return False
                if t[j] == s[i]:
                   t[j] = '#'
                   if s[i] == 'A' and i < j:
                      return False
                   if s[i] == 'B' and i > j:
                      return False
                   break
       return True
    s = "##AB##B"
    t = "A###B#B"
    print (solve(s, t))

    入力

    "##AB##B", "A###B#B"

    出力

    True

    1. リストの文字列表現をPythonでリストに変換する

      Pythonはさまざまなデータ型を処理するため、リストが文字列の形式で表示される状況に遭遇します。この記事では、文字列をリストに変換する方法を説明します。 ストリップとスプリット付き 最初にstripメソッドを適用して角かっこを削除し、次にsplit関数を適用します。パラメータとしてコンマを使用するsplit関数は、文字列からリストを作成します。 例 stringA = "[Mon, 2, Tue, 5,]" # Given string print("Given string", stringA) print(type(stringA)) # Str

    2. 1つのPython文字列を別の文字列に追加します

      Pythonに文字列を追加することで、それらを連結して新しい文字列を取得します。これは、テキスト分析などの多くのシナリオで役立ちます。以下は、このタスクで検討する2つのアプローチです。 +=演算子の使用 +演算子は、数値の場合と同様に文字列に使用できます。唯一の違いは、文字列の場合、数値の加算ではなく連結が発生することです。 例 s1 = "What a beautiful " s2 = "flower " print("Given string s1 : " + str(s1)) print("Given string