Menu
CoddyTech

Decode String

ふつうスタック再帰python iconjava iconcpp iconc iconjs icon+10

エンコードされた文字列では、繰り返すテキストを k[text] として表します。つまり、text を連続して k 回書いたものです。グループは入れ子にできるため、2[a3[b]] は abbbabbb を表します。エンコードされた文字列 s が与えられたとき、デコードした文字列を返してください。

どの角括弧の外にもある文字は、そのままにします。各回数は [ の直前に書かれた正の整数で、数字はそれ以外の場所には現れません。

関数

decodeString(s: string) → string
sstring
エンコードされた文字列
戻り値string
デコードされた文字列

制約

  • 1 ≤ s.length ≤ 104
  • sには、小文字の英字、数字、[、]のみが含まれます。
  • sは有効な符号化です。すべての[の前には個数があり、対応する]があり、空の括弧はありません。
  • すべての個数 k は 1 ≤ k ≤ 300 を満たし、先頭にゼロはありません。
  • 括弧のネストは最大100レベルまでです。
  • デコードされた文字列は、最大でも 5 × 104 文字です。

例

入力
s = "2[ab]3[c]x"
出力
"ababcccx"
説明
2[ab]はababになり、3[c]はcccになります。xはすべての括弧の外にあり、そのままコピーされます。つまり、ababcccxです。
challenge icon

発展問題

デコードされた文字列は、入力よりはるかに長くなることがあります。長さが10^18に達する可能性がある場合、文字列を構築せずに位置iの文字を返すにはどうすればよいでしょうか?

コードをリセット
def decodeString(s):
    # ここにコードを書いてください

テスト #1

テスト #2

テスト #3

引数

s = "2[ab]3[c]x"

期待される出力

"ababcccx"