Pythonでn(t)形式で表される文字列を展開するプログラム
文字列sがあるとすると、これはより長い文字列をエンコードしています。 sはn(t)の連結として表され、n(t)はt、n回の連結を表し、tは通常の文字列であるか、再帰的にエンコードされた別の文字列です。 sのデコードされたバージョンを見つける必要があります。
したがって、入力がs ="3(pi)2(3(am))0(f)1(u)"の場合、出力は "pipipiamamamamamamu"
になります。これを解決するには、次の手順に従います-
-
i:=0
-
関数parse()を定義します。これには時間がかかります
-
ans:=新しいリスト
-
i
-
s [i]が数字の場合、
-
d:=0
-
s [i]は数字ですが、実行してください
-
d:=10 * d + s [i]
の整数部分 -
i:=i + 1
-
-
i:=i + 1
-
セグメント:=parse()
-
i:=i + 1
-
セグメントをd回挿入します
-
-
それ以外の場合
-
ansの最後にs[i]を挿入します
-
i:=i + 1
-
-
-
ansのアイテムを結合した後に文字列を返す
-
メインメソッドからreturnparse()
例
理解を深めるために、次の実装を見てみましょう-
class Solution: def solve(self, s): i = 0 def parse(): nonlocal i ans = [] while i < len(s) and s[i] != ")": if s[i].isdigit(): d = 0 while s[i].isdigit(): d = 10 * d + int(s[i]) i += 1 i += 1 segment = parse() i += 1 ans.extend(segment for _ in range(d)) else: ans.append(s[i]) i += 1 return "".join(ans) return parse() ob = Solution() s = "3(pi)2(3(am))0(f)1(u)" print(ob.solve(s))
入力
"3(pi)2(3(am))0(f)1(u)"
出力
pipipiamamamamamamu
-
16進文字列を10進数に変換するPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 − 16進文字列が与えられたので、それを10進数に変換する必要があります。 問題を解決するための2つのアプローチがあります- ブルートフォースアプローチ 組み込みモジュールの使用 ブルートフォース方式 ここでは、明示的な型キャスト関数、つまり整数を利用します。この関数は、2つの引数、つまり16進数と同等の引数とベース(16)を取ります。この関数は、16進文字列を整数型の同等の10進数に変換するために使用されます。これは、さらに文字列形式に型キャストして戻すことができます。 例 #input strin
-
Python 3で辞書を使用して文字列をフォーマットするにはどうすればよいですか?
辞書を使用して文字列を補間できます。これらには、%と変換文字の間の括弧内にキーを指定する必要がある構文があります。たとえば、フロートがキー「cost」に格納されていて、それを「$ xxxx.xx」としてフォーマットする場合は、表示する場所に「$%(cost).2f」を配置します。 。 辞書で文字列フォーマットを使用して文字列を補間し、数値をフォーマットする例を次に示します。 >>>print('%(language)s has %(number)03d quote types.' % {'language': "Python&quo