Menu
CoddyTech

Decode String

SedangStackRekursipython iconjava iconcpp iconc iconjs icon+10

String yang dikodekan menuliskan teks berulang sebagai k[text]: text ditulis sebanyak k kali berturut-turut. Grup dapat bersarang, jadi 2[a3[b]] mewakili abbbabbb. Diberikan string yang dikodekan s, kembalikan string yang sudah didekode.

Huruf di luar semua tanda kurung tetap seperti semula. Setiap hitungan adalah bilangan bulat positif yang ditulis tepat sebelum [, dan angka tidak muncul di tempat lain.

Fungsi

decodeString(s: string) → string
sstring
string yang dikodekan
Mengembalikanstring
string hasil dekode

Batasan

  • 1 ≤ s.length ≤ 104
  • s hanya berisi huruf bahasa Inggris kecil, angka, [ dan ].
  • s adalah pengodean yang valid: setiap [ mengikuti sebuah hitungan dan memiliki ] yang cocok, serta tidak ada tanda kurung siku yang kosong.
  • Setiap count k memenuhi 1 ≤ k ≤ 300 dan tidak memiliki nol di depan.
  • Tanda kurung bersarang hingga kedalaman maksimal 100 tingkat.
  • String yang telah didekode memiliki paling banyak 5 × 104 karakter.

Contoh

Input
s = "2[ab]3[c]x"
Output
"ababcccx"
Penjelasan
2[ab] menghasilkan abab dan 3[c] menghasilkan ccc. x berada di luar setiap tanda kurung dan disalin apa adanya: ababcccx.
challenge icon

Pertanyaan lanjutan

string hasil dekode bisa jauh lebih panjang daripada input. Bagaimana kamu akan mengembalikan karakter pada posisi i tanpa membangun string tersebut, saat panjangnya bisa mencapai 10^18?

Reset kode
def decodeString(s):
    # Tulis kodemu di sini

Tes #1

Tes #2

Tes #3

Argumen

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

Output yang diharapkan

"ababcccx"