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になります。

lock icon提出時に隠しテスト+22件

challenge icon

発展問題

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

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

ケース1

ケース2

ケース3

入力

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

期待値

"ababcccx"