|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 xiao480054 于 2022-8-23 21:04 编辑
问题:请编写一个程序,判断给定的字符串 s 中括号的写法是否合法。
限制条件:
1.字符串仅包含 '('、')'、'['、']'、'{'、'}' 这三对括号的组合。
2.左右括号必须成对编写,比如 "()" 是合法的,"(" 则是非法的。
3.左右括号必须以正确的顺序闭合,比如 "{()}" 是合法的,"{(})" 则是非法的。
我按照自己的思路编写了以下代码:
while True:
s = input("请输入测试字符串:")
n = []
for each in s:
n.append(each)
if "{" and "}" and "[" and "]" and "(" and ")" in n:
if n.count("{") == n.count("}")) and (n.count("[") == n.count("]")) and (n.count("(") == n.count(")"):
n.sort()
print(n)
print("合法的")
else:
print("非法的")
elif "[" and "]" and "(" and ")" in n:
if n.count("[") == n.count("]") and n.count("(") == n.count(")"):
n.sort()
print(n)
print("合法的")
else:
print("非法的")
elif "{" and "}" and "[" and "]" in n:
if n.count("{") == n.count("}") and n.count("[") == n.count("]"):
n.sort()
print(n)
print("合法的")
else:
print("非法的")
elif "{" and "}" and "(" and ")" in n:
if n.count("{") == n.count("}") and n.count("(") == n.count(")"):
n.sort()
print(n)
print("合法的")
else:
print("非法的")
elif "(" and ")" in n:
if n.count("(") == n.count(")"):
n.sort()
print(n)
print("合法的")
else:
print("非法的")
elif "[" and "]" in n:
if n.count("[") == n.count("]"):
n.sort()
print(n)
print("合法的")
else:
print("非法的")
elif "{" and "}" in n:
if n.count("{") == n.count("}"):
n.sort()
print(n)
print("合法的")
else:
print("非法的")
else:
print("非法的")
运行结果出现BUG:
===
请输入测试字符串:{}[](){}[](){}[]()
['(', '(', '(', ')', ')', ')', '[', '[', '[', ']', ']', ']', '{', '{', '{', '}', '}', '}']
合法的
请输入测试字符串:{}[](){}[](){}[](
非法的
请输入测试字符串:{}[](){}[](
非法的
请输入测试字符串:{}[](
['(', '[', ']', '{', '}']
合法的
===
求大家帮忙查看到底哪里出问题了。 T_T |
|