如何用Python实现指定格式字符串解码,将k[encoded_string]转为对应重复字符串?
我们可以用栈存储遇到左括号前的临时状态(已拼接完成的字符串、当前括号对应的重复次数),一次遍历即可完成解码,无需单独判断待重复字符串的结束位置,同时支持多位数重复次数、嵌套括号的场景。
完整可运行代码
s = input() stack = [] current_str = "" current_num = 0 for char in s: # 处理数字,兼容多位数场景例如12[abc] if char.isdigit(): current_num = current_num * 10 + int(char) # 遇到左括号,暂存当前状态到栈,重置临时变量处理括号内内容 elif char == "[": stack.append((current_str, current_num)) current_str = "" current_num = 0 # 遇到右括号,取出栈内存储的状态,拼接重复后的字符串 elif char == "]": prev_str, repeat_count = stack.pop() current_str = prev_str + current_str * repeat_count # 普通字符直接拼接至当前临时字符串 else: current_str += char print(current_str)
运行效果验证
- 输入
3[a]2[b],输出aaabb - 输入
3[ab]2[c],输出abababcc - 输入
2[3[a]b](嵌套场景),输出aaabaaab
原有代码的问题
你当前的反转遍历逻辑仅能提取最内层单个括号的内容,无法处理连续多组括号、嵌套括号的场景,也无法将重复后的内容和括号前后的其他字符串做拼接。
内容的提问来源于stack exchange,提问作者krox
相关产品推荐
相关产品推荐

