Python【匹配符号】

要求:

输入一行符号,以#结束,判断其中的对称符号是否匹配。对称符号包括:
    { } 、 [ ] 、 ( )、 < >

    如果对称符号能够实现中间对称,则输出yes
    否则输出no
 

代码如下:

# 定义一个函数,用于判断输入行中的对称符号是否匹配
def is_symmetric(expression):
    # 定义对称符号的映射关系
    brackets = {'{': '}', '[': ']', '(': ')', '<': '>'}
    
    # 初始化一个空栈,用于存储遇到的左括号
    stack = []
    
    # 遍历输入字符串中的每个字符
    for char in expression:
        # 如果是左括号,则入栈
        if char in brackets.keys():
            stack.append(char)
        # 如果是右括号
        elif char in brackets.values():
            # 如果栈不为空,且栈顶的左括号与当前右括号匹配
            if stack and brackets[stack[-1]] == char:
                # 出栈,表示找到了匹配的左括号
                stack.pop()
            else:
                # 如果不匹配,则对称符号不成立,返回'no'
                return 'no'
    
    # 如果栈为空,说明所有左括号都有匹配的右括号,返回'yes',否则返回'no'
    return 'yes' if not stack else 'no'

# 测试用例一
test_case_1 = "({<(({<>}))>})"
result_1 = is_symmetric(test_case_1)
print(result_1)  # 输出:yes

# 测试用例二
test_case_2 = "()()()"
result_2 = is_symmetric(test_case_2)
print(result_2)  # 输出:no

你可能感兴趣的:(Python,python)