输入的字符串是:
3[a]2[bc]
class Solution:
def decodeString(self, s: str) -> str:
# 分析下要破译的字符出啊一共有几种形式的输入呢?数字,字母,左括号以及右括号。一共有四种输入
# ===========参数解释======================
# res:永远记录的是已经破译好的字符串
# stack: 记录res以及即将要破译的字符串重复的次数
# multi:即将破译的字符串要重复的次数
# =======================================
multi,res,stack = 0,'',[]
for item in s:
# print(item)
if '0' < item <= '9':
multi = multi*10 + int(item)
elif item == '[':# 这里出错了。append进去之后,要更新一下res 以及multi的值
stack.append([multi,res])
res,multi = '',0
elif item ==']':
curr_multi,last_res = stack.pop()
# last_res是已经译码解析完成的字符串。
res = last_res + curr_multi*res # 这里乘法的位置也出现了错误。
else:
res += item
# 单步循环完之后,查看一下当时初始化的变量都有什么,以及它们的值是怎么变化的。
print(f'item:{item}')
print(f'res:{res}')
print(f'stack:{stack}')
print(f'multi:{multi}')
print('======================')
return res