字符串解码
Decode String
本机进度仅保存在当前浏览器
题目描述
给定一个经过编码的字符串,编码规则为 k[encoded_string],表示方括号内的字符串恰好重复 k 次。输入保证编码合法,k 为正整数,可能存在嵌套。
示例:s = "3[a2[c]]",解码为 "accaccacc"。
解题思路
- 嵌套结构天然适合栈:遇到 [ 时把当前串与重复次数压栈,开始构建新层。
- 遇到 ] 时弹栈,把刚构建的层重复 k 次接到上一层串尾。
- 数字可能多位,需要持续读入拼接成完整倍数;字母直接追加到当前层。
参考实现
查看参考实现Python · 建议先自行作答
def decodeString(s):
stack = [] # [上一层字符串, 重复次数]
cur, num = '', 0
for ch in s:
if ch.isdigit():
num = num * 10 + int(ch)
elif ch == '[':
stack.append((cur, num))
cur, num = '', 0
elif ch == ']':
prev, k = stack.pop()
cur = prev + cur * k
else:
cur += ch
return cur