概述
括号匹配
- 括号使用正确的句子返回True,不正确的返回False
- 算法原理:
- 利用循环,字符串中的字符一个一个进行检测,检测到括号以外的东西跳过。
- 利用栈后进先出的原理,检测到左括号则入栈,检测到右括号,则栈中最后进入的左括号出栈,与之进行匹配检测。
- 匹配正确则continue,错误则返回False。全部循环结束且不出错则返回True。
- 难度:★★★
- 易错点:理清楚步骤和细节
- 代码示例:
def match_parentheses(s):
ls = [] # 将list当作一个栈使用
parentheses = "()[]{}()【】「」"
left_parentheses = "([{(【「" # 左括号
right_parentheses = ")]})】」" # 右括号
for i in range(0, len(s)):
si = s[i]
#如果不是括号则continue
if parentheses.find(si) == -1:
continue
# 左括号入栈
if left_parentheses.find(si) != -1:
ls.append(si)
continue
if len(ls) == 0:
return False
# 检测到是右括号,出栈匹配
if right_parentheses.find(si) != -1:
p = ls.pop() #最后入栈的左括号
if (p == '(' and si == ')') or (p == '[' and si == ']') or (p == '{' and si == '}') or
(p == '(' and si == ')') or (p == '【' and si == '】') or (p == '「' and si == '」'):
continue
else:
return False
#检测是否有多余括号
if len(ls) > 0:
return False
return True
if __name__ == '__main__':
s = input("请输入要匹配的句子:")
result = match_parentheses(s)
print(s, result)
- 运行结果
请输入要匹配的句子:{{[ddd(da)]}}
{{ddd(da)}} True
请输入要匹配的句子:(shdhd){sk{sjs}
(shdhd){sk{sjs} False
最后
以上就是成就热狗为你收集整理的用栈实现括号匹配(Python)括号匹配的全部内容,希望文章能够帮你解决用栈实现括号匹配(Python)括号匹配所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复