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

Pythonで隣接する2桁が同じでない最小数を形成するプログラム


4つの可能な文字「1」、「2」、「3」、および「?」を含む文字列sがあるとします。 「?」の代わりに「1」、「2」、「3」のいずれかを配置できます。隣接する2桁が同じにならないように、可能な限り最小の数を見つける必要があります。

したがって、入力がs ="2 ?? 3?"の場合、出力は21231

になります。

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

  • i:=0
  • s:=sの要素のリスト
  • サイズがs<2の場合、
    • s [i]が「?」と同じ場合、
      • 「1」を返す
  • i
  • s [i]が「?」と同じ場合、
    • iが0と同じ場合、
      • s [i]:=s [i +1]が"1"でない場合は"1"、それ以外の場合は "2"
    • それ以外の場合、i>0かつi<=s-2のサイズの場合、
      • s[i-1]が"1"と同じ場合、
        • s [i + 1]が「2」と同じ場合、
          • s [i]:="3"
        • それ以外の場合、
          • s [i]:="2"
      • それ以外の場合、s[i-1]が「2」と同じである場合
        • s [i + 1]が「2」と同じ場合、
          • s [i]:="3"
        • それ以外の場合、
          • s [i]:="1"
      • それ以外の場合、s[i-1]が「3」と同じである場合
        • s [i + 1]が「2」と同じ場合、
          • s [i]:="2"
        • それ以外の場合、
          • s [i]:="1"
    • それ以外の場合、
      • s [i]:=s[i-1]が"1"でない場合は"1"、それ以外の場合は "2"
  • i:=i + 1
  • sのアイテムを文字列に結合して、返します
  • 理解を深めるために、次の実装を見てみましょう-

    def solve(s):
       i = 0
       s = list(s)
       if len(s) < 2:
          if s[i] == "?":
             return "1"
       while i < len(s):
          if s[i] == "?":
             if i == 0:
                s[i] = "1" if s[i + 1] != "1" else "2"
             elif i > 0 and i <= len(s) - 2:
                if s[i - 1] == "1":
                   if s[i + 1] == "2":
                      s[i] = "3"
                   else:
                      s[i] = "2"
                elif s[i - 1] == "2":
                   if s[i + 1] == "1":
                      s[i] = "3"
                   else:
                      s[i] = "1"
                elif s[i - 1] == "3":
                   if s[i + 1] == "1":
                      s[i] = "2"
                   else:
                      s[i] = "1"
             else:
                s[i] = "1" if s[i - 1] != "1" else "2"
          i += 1
       return "".join(s)
    
    s = "2??3?"
    print(solve(s))

    入力

    "2??3?"
    

    出力

    21231

    1. Pythonで葉のシーケンスが2つの葉と同じであるかどうかを確認するプログラム

      2つの二分木があるとします。両方の木の左から右への葉の順序が同じであるかどうかを確認する必要があります。 したがって、入力が次のような場合 両方のツリーのシーケンスが[2、6]であるため、出力はTrueになります。 これを解決するには、次の手順に従います。 c:=新しいリスト 関数inorder()を定義します。これが定着し、c cがnullの場合、 c:=新しいリスト rootがnullでない場合、 順序(ルートの左側、c) ルートの左側がnullで、ルートの右側がnullの場合、 cの最後にrootの値を挿入 順序(ルートの権利、c) return c

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

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