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

使用Python分割含空格匹配括号组:代码无法识别嵌套组问题

括号组分割程序修复

需求描述

给定由匹配括号组和空格组成的字符串,编写易用的Python程序,将其分割为无空格的完美匹配括号组。

输入输出示例

  • 输入:( ()) ((()()())) (()) (),输出:['(())', '((()()()))', '(())', '()']
  • 输入:() (( ( )() ( )) ) ( ()),输出:['()', '((()()()))', '(())']

现有问题代码

def split_parentheses(input_string):
    result = []
    stack = []
    for char in input_string:
        if char == '(':
            stack.append(char)
        elif char == ')':
            if len(stack) > 0 and stack[-1] == '(':
                stack.pop()
                if len(stack) == 0:
                    result.append(''.join(stack))
                    stack = []  # clear stack for the next group
            else:
                return "Invalid input string: parentheses not perfectly matched."
    if len(stack) > 0:
        return "Invalid input string: parentheses not perfectly matched."
    return result

def wrap_with_parentheses(string):
    return f'({string})'

input_string = input("Enter a string of perfectly matched parentheses and whitespace: ")
result = split_parentheses(input_string)
result = list(map(wrap_with_parentheses, result))
print(result)

问题分析

原代码核心问题:

  • 仅用栈记录左括号数量,未保存完整括号序列,栈清空时''.join(stack)只能得到空字符串,后续手动加括号的操作完全错误。
  • 无法追踪嵌套括号组的完整内容,自然提取不出((()()()))这类嵌套结构的括号组。

修复后的代码

def split_parentheses(input_string):
    result = []
    stack = []
    current_group = []
    
    for char in input_string:
        if char == ' ':
            continue  # 直接跳过空格
        if char == '(':
            stack.append(char)
            current_group.append(char)
        elif char == ')':
            if not stack or stack[-1] != '(':
                return "Invalid input string: parentheses not perfectly matched."
            stack.pop()
            current_group.append(char)
            # 栈为空时,当前括号组匹配完成
            if not stack:
                result.append(''.join(current_group))
                current_group = []  # 重置当前组
    
    if stack:
        return "Invalid input string: parentheses not perfectly matched."
    return result

input_string = input("Enter a string of perfectly matched parentheses and whitespace: ")
result = split_parentheses(input_string)
print(result)

代码说明

  1. 跳过空格:遍历字符串时直接忽略空格,无需额外处理。
  2. 跟踪当前括号组:用current_group列表保存正在构建的括号序列,每遇到左/右括号都添加进去。
  3. 栈的作用:仅用于判断括号匹配状态和组结束时机——栈清空时,说明当前括号组完美匹配,将其加入结果并重置current_group。
  4. 错误处理:遇到不匹配的右括号或遍历结束后栈不为空时,返回错误提示。

内容的提问来源于stack exchange,提问作者Anukaran Arora

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 21:21:47