要求:
输入一行符号,以#结束,判断其中的对称符号是否匹配。对称符号包括:
{ } 、 [ ] 、 ( )、 < >
如果对称符号能够实现中间对称,则输出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