Pythonでメッセージをデコードできるいくつかの方法を見つけるためのプログラム
'a' =1、'b' =2、...'z' =26のようなマッピングがあり、エンコードされたメッセージメッセージ文字列があるとすると、デコードできる方法の数を数える必要があります。
したがって、入力がmessage ="222"の場合、出力は3になります。これは、bbb、bv、vbの3つの方法でデコードできるためです。
これを解決するには、次の手順に従います-
-
memo:=メッセージサイズ+1と同じサイズの0のリスト
-
memo [0]:=1
-
memo [1]:=1(message [0]が「0」と同じでない場合)それ以外の場合は0
-
2からメッセージのサイズまでの範囲のiの場合、実行します
-
n1:=メッセージの数値[インデックスi-1からiまで]
-
n2:=メッセージの数値[インデックスi-2からiまで]
-
n1_valid:=n1> 0
の場合はtrue -
n2_valid:=n2>9およびn2<27の場合はtrue
-
n1_validがtrueの場合、
-
memo [i]:=memo [i] + memo [i-1]
-
-
n2_validがtrueの場合、
-
memo [i]:=memo [i] + memo [i-2]
-
-
-
メモの最後の要素を返す
理解を深めるために、次の実装を見てみましょう-
例
class Solution: def solve(self, message): memo = [0 for i in range(len(message)+1)] memo[0] = 1 memo[1] = 1 if message[0]!="0" else 0 for i in range(2,len(message)+1): n1 = int(message[i-1:i]) n2 = int(message[i-2:i]) n1_valid= n1>0 n2_valid= n2>9 and n2<27 if n1_valid: memo[i]+=memo[i-1] if n2_valid: memo[i]+=memo[i-2] return memo[-1] ob = Solution() message = "2223" print(ob.solve(message))
入力
"2223"
出力
5
-
Pythonで階段を上る方法をいくつ見つけるかをプログラムする
n段の階段があり、一度に1段または2段の階段を上ることができるとします。階段を上るユニークな方法の数を返す関数を定義する必要があります。 ステップの順序は変更しないでください。そのため、ステップの異なる順序はそれぞれ1つの方法としてカウントされます。答えが非常に大きい場合は、結果を10 ^ 9+7で変更します したがって、入力がn =5のような場合、8つの固有の方法があるため、出力は8になります- 1、1、1、1、1 2、1、1、1 1、2、1、1 1、1、2、1 1、1、1、2 1、2、2 2、1、2 2、2、1 これを解決するには、次の手順に従いま
-
リスト内で最大数を見つけるPythonプログラム
この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 与えられたリスト入力では、与えられたリストの中で最大の数を見つける必要があります。 ここでは、2つのアプローチについて説明します 並べ替え手法の使用 組み込みのmax()関数を使用する アプローチ1-組み込みのsort()関数を使用する 例 list1 = [18, 65, 78, 89, 90] list1.sort() # main print("Largest element is:", list1[-1]) 出力 Largest element is: