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

Pythonでウェイをデコードする


AからZまでの文字を含むメッセージが、次のマッピングを使用して数字にエンコードされているとします-'A'→1、'B'→2...'Z'→ 26.したがって、数字のみを含む空でない文字列が1つある場合、デコードできる方法がいくつあるかを見つける必要があります。したがって、文字列が「12」のような場合、それは「AB」または「L」から作成できるため、2つの方法が考えられます。したがって、答えは2になります。

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

  • 動的計画法を使用してこれを解決します。
  • n:=sの長さ
  • dp:=0の数がnの配列
  • s [0]が「0」でない場合、dp [0]:=1
  • 1からn–1の範囲のiの場合
    • x:=s [i]は整数、y:=インデックスi –1からi+1までのsの部分文字列
    • x>=1かつy<=9の場合、dp [i]:=dp [i] + dp [i – 1]
    • y>=10かつy<=26
        の場合
      • i – 2> =0の場合、dp [i]:=dp [i] + dp [i – 2]、それ以外の場合はdp[i]を1増やします
  • dpの最後の要素を返す

例(Python)

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

class Solution(object):
   def numDecodings(self, s):
      n = len(s)
      dp = [0 for i in range(n)]
      if s[0]!='0':
         dp[0]=1
      for i in range(1,n):
         x = int(s[i])
         y = int(s[i-1:i+1])
         if x>=1 and x<=9:
            dp[i]+=dp[i-1]
         if y>=10 and y<=26:
            if i-2>=0:
               dp[i]+=dp[i-2]
            else:
               dp[i]+=1
      return dp[-1]
ob1 = Solution()
print(ob1.numDecodings("226"))

入力

"226"

出力

3

  1. Pythonでエスケープ文字を印刷する方法

    この記事では、Pythonでエスケープ文字を印刷する方法を見ていきます。エスケープ文字とは何か知っていると思いますか?知らない人のためのエスケープ文字は何ですか? 文字列の個々の意味には、エスケープ文字が使用されます。 改行、タブスペースを含める場合 、など、文字列では、これらのエスケープ文字を使用できます。いくつかの例を見てみましょう。 例 ## new line new_line_string = "Hi\nHow are you?" ## it will print 'Hi' in first line and 'How are you?&

  2. Pythonで文字をインクリメントする方法

    このチュートリアルでは、Pythonで文字をインクリメントするさまざまな方法を紹介します。 型キャスト まず、型キャストせずにintをcharに追加するとどうなるか見てみましょう。 例 ## str initialization char = "t" ## try to add 1 to char char += 1 ## gets an error 上記のプログラムを実行すると、次の結果が得られます- TypeError          Traceback (most recent call last) <ip