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