Pythonで文字列をアルファベットから整数マッピングに復号化
数字( '0'-'9')と'#'で構成される文字列sがあるとします。次のように、sを1つの英語の小文字にマップする必要があります-
-
文字(「a」から「i」)は、それぞれ(「1」から「9」)で表されます。
-
文字(「j」から「z」)は、それぞれ(「10#」から「26#」)で表されます。
マッピング後に形成された文字列を見つける必要があります。一意のマッピングが常に存在するという1つの仮定を採用しています。したがって、入力が「10#11#12」の場合、「jkab」になります。 10#はj、11#はk、1はa、2はbです。
これを解決するには、次の手順に従います-
-
すべての文字とそれに対応するASCII値を保持する1つのマップを作成します
-
ans:=0、およびmap [‘’]:=‘’、ad i:=文字列の長さ– 1
-
i> 0
-
s [i]が#の場合、
-
temp:=“”
-
j:=i – 2からiの場合、temp:=temp + s [j]
-
ans:=map [temp] + ans
-
iを3減らします
-
-
それ以外の場合は、ans:=map [s [i]] + ansであり、iを1つ減らします
-
-
ansを返す
例(Python)
理解を深めるために、次の実装を見てみましょう-
class Solution(object): def freqAlphabets(self, s): m = {} x = 'a' for i in range(1, 27): m[str(i)] = x x = chr(ord(x) + 1) ans = "" m['']='' i = len(s) - 1 while i >= 0: if s[i] == "#": temp = "" for j in range(i - 2, i): temp += s[j] ans = m[str(temp)] + ans i -= 3 else: ans = m[s[i]] + ans i -= 1 return ans ob1 = Solution() print(ob1.freqAlphabets("17#123#5621#"))
入力
"17#123#5621#"
出力
qawefu
-
Pythonのリーフから始まる最小の文字列
二分木のルートがあり、各ノードに0から25までの値が含まれているとします。これらの値は、文字「a」から「z」を表します。値0は「a」を表し、値1は「b」を表します。 、 等々。このツリーの葉で始まり、ルートで終わる辞書式順序で最小の文字列を検索する必要があります。したがって、ツリーが次のような場合- シーケンスが[0,3,25]であるため、出力は「adz」になります。 これを解決するには、次の手順に従います- 次のようにdfsトラバーサルメソッドを定義します ノードがnullでない場合、 ノード値を文字としてAに挿入します ノードに左右の子がない場合、
-
Pythonプログラムで文字列からn番目の文字を削除する
この記事では、以下に示す問題ステートメントの解決策について学習します- 問題の説明 文字列が与えられたので、与えられた文字列からi番目のインデックス付き文字を削除して表示する必要があります。 Pythonのどの文字列でも、インデックス付けは常に0から始まります。文字列「tutorialspoint」があるとすると、そのインデックス付けは次のように行われます- T u t o r i a l s p o i n t 0 1 2 3 4 5 6 7 8 9 10 11 12 13 次に、ステートメントを解決するためのPythonスクリプトgを見てみましょう- 例 def remove(str