Menu
CoddyTech

Decode String

Trung bìnhNgăn xếpĐệ quypython iconjava iconcpp iconc iconjs icon+10

Chuỗi được mã hóa biểu diễn văn bản lặp lại theo dạng k[text]: text được viết k lần liên tiếp. Các nhóm có thể lồng nhau, vì vậy 2[a3[b]] biểu thị abbbabbb. Cho chuỗi được mã hóa s, hãy trả về chuỗi đã giải mã.

Các chữ cái nằm ngoài mọi dấu ngoặc vuông được giữ nguyên. Mỗi số đếm là một số nguyên dương được viết ngay trước [, và chữ số không xuất hiện ở nơi nào khác.

Hàm

decodeString(s: string) → string
sstring
chuỗi đã mã hóa
Trả vềstring
chuỗi đã giải mã

Ràng buộc

  • 1 ≤ s.length ≤ 104
  • s chỉ chứa các chữ cái tiếng Anh viết thường, chữ số, [ và ].
  • s là một cách mã hóa hợp lệ: mỗi [ đều theo sau một số lượng và có ] tương ứng, đồng thời không có cặp ngoặc nào rỗng.
  • Mỗi số đếm k thỏa mãn 1 ≤ k ≤ 300 và không có số 0 đứng đầu.
  • Ngoặc lồng nhau sâu tối đa 100 cấp.
  • Chuỗi đã giải mã có nhiều nhất 5 × 104 ký tự.

Ví dụ

Đầu vào
s = "2[ab]3[c]x"
Đầu ra
"ababcccx"
Giải thích
2[ab] cho kết quả abab và 3[c] cho kết quả ccc. x nằm bên ngoài mọi dấu ngoặc vuông và được sao chép nguyên trạng: ababcccx.
challenge icon

Câu hỏi mở rộng

Chuỗi đã giải mã có thể dài hơn đầu vào rất nhiều. Làm thế nào bạn có thể trả về ký tự (character) ở vị trí i mà không cần tạo chuỗi (string), khi độ dài của chuỗi có thể lên đến 10^18?

Đặt lại code
def decodeString(s):
    # Viết code ở đây

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

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

Đầu ra mong đợi

"ababcccx"