You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 17:54:05