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

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

  1. 16進文字列を10進数に変換するPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 − 16進文字列が与えられたので、それを10進数に変換する必要があります。 問題を解決するための2つのアプローチがあります- ブルートフォースアプローチ 組み込みモジュールの使用 ブルートフォース方式 ここでは、明示的な型キャスト関数、つまり整数を利用します。この関数は、2つの引数、つまり16進数と同等の引数とベース(16)を取ります。この関数は、16進文字列を整数型の同等の10進数に変換するために使用されます。これは、さらに文字列形式に型キャストして戻すことができます。 例 #input strin

  2. Python 3で辞書を使用して文字列をフォーマットするにはどうすればよいですか?

    辞書を使用して文字列を補間できます。これらには、%と変換文字の間の括弧内にキーを指定する必要がある構文があります。たとえば、フロートがキー「cost」に格納されていて、それを「$ xxxx.xx」としてフォーマットする場合は、表示する場所に「$%(cost).2f」を配置します。 。 辞書で文字列フォーマットを使用して文字列を補間し、数値をフォーマットする例を次に示します。 >>>print('%(language)s has %(number)03d quote types.' % {'language': "Python&quo