Menu
CoddyTech

Decode String

Kodlanmış bir dizede yinelenen metin k[text] biçiminde yazılır; bu, text metninin art arda k kez yazılması anlamına gelir. Gruplar başka grupların içinde yer alabilir; bu nedenle 2[a3[b]], abbbabbb anlamına gelir. Kodlanmış bir s dizesi alan ve çözülmüş dizeyi döndüren bir işlev yaz.

Köşeli parantezlerin dışındaki tüm harfler olduğu gibi kalır. Her sayı, hemen öncesinde bulunduğu [ karakterinden önce yazılmış pozitif bir tam sayıdır ve rakamlar başka hiçbir yerde bulunmaz.

Fonksiyon

decodeString(s: string) → string
sstring
kodlanmış dize
Döndürürstring
çözümlenmiş dize

Kısıtlar

  • 1 ≤ s.length ≤ 104
  • s yalnızca küçük harfli İngilizce harfler, rakamlar, [ ve ] içerir.
  • s geçerli bir kodlamadır: her [ işaretinden önce bir sayı bulunur ve eşleşen bir ] işareti vardır; ayrıca hiçbir köşeli parantez boş değildir.
  • Her k sayısı 1 ≤ k ≤ 300 koşulunu sağlar ve başında sıfır bulunmaz.
  • Köşeli parantezler en fazla 100 düzey derinliğinde iç içe geçebilir.
  • Kod çözülmüş dizenin en fazla 5 × 104 karakteri vardır.

Örnekler

Girdi
s = "2[ab]3[c]x"
Çıktı
"ababcccx"
Açıklama
2[ab], abab sonucunu verir ve 3[c], ccc sonucunu verir. x tüm köşeli parantezlerin dışında yer alır, bu yüzden olduğu gibi kopyalanır ve sonuç ababcccx olur.

lock iconGönderirken +22 gizli test

challenge icon

Ek soru

Çözümlenmiş dize, girdiden çok daha uzun olabilir. Çözümlenmiş uzunluk 10^18 değerine ulaşabilirken, çözümlenmiş dizgeyi oluşturmadan yalnızca i konumundaki karakteri nasıl döndürürdün?

Kodu sıfırla
def decodeString(s):
    # Kodu buraya yazın
Test durumları

Durum 1

Durum 2

Durum 3

Girdi

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

Beklenen

"ababcccx"