介绍
这篇文章将为大家详细讲解有关Python怎么实现求解括号匹配问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
<强>主要的思路:强>
首先设置两个列表分别存放的是各种括号的开括号和闭括号,然后遍历给定的字符串,分如下几种情况:
1。字符串首字符出现在闭括号列表中,直接结束,输出错误
2。字符串长度不为偶数,直接结束,输出错误
3。对原始字符串列表化去重,如果去重后的列表长度不为偶数直接结束,输出错误
4。遍历字符串,将属于开括号集合的括号加入到列表中,当遇上一个闭括号的时候计算该闭括号在闭括号列表中的索引与当前列表最后一个开括号在开括号列表中的索引是否一致,一致则继续,否则直接结束,输出错误
主要是在长度很大的时候可以尽快判断一些比较明显的错误的模式,节省时间,按照这个简单的思想,下面是具体的实现:
# !/usr/bin env python utf - 8编码: & # 39;& # 39;& # 39;& # 39;& # 39; __Author__:沂水寒城 功能:括号匹配的相关问题 & # 39;& # 39;& # 39; def bracket_mathch (one_str): ,& # 39;& # 39;& # 39;& # 39;& # 39; ,括号匹配 ,& # 39;& # 39;& # 39; ,tmp_list=[] ,open_bracket_list=[& # 39; (& # 39; & # 39; [& # 39; & # 39; {& # 39; & # 39; & lt; & # 39;, & # 39;《& # 39;】 ,close_bracket_list=[& # 39;) & # 39; & # 39;] & # 39;, & # 39;} & # 39; & # 39; & # 39;, & # 39;》& # 39;】 ,one_str_list=列表(one_str) ,长度=len (one_str_list) ,set_list=列表(设置(one_str_list)) ,num_list=[one_str_list.count(一个),for one 拷贝set_list] ,if one_str[0],拷贝close_bracket_list: return 才能;错误的 长度,elif  % 2 !=0: return 才能;错误的 ,elif len (set_list) % 2 !=0: return 才能;错误的 ,其他的: for 才能小姐:拷贝范围(长度): ,,if one_str[我],拷贝open_bracket_list: ,,,tmp_list.append (one_str[我]) ,,elif one_str[我],拷贝close_bracket_list: ,,,if close_bracket_list.index (one_str[我])==open_bracket_list.index (tmp_list [1]): ,,,,tmp_list.pop () ,,,: ,,,,return 错误的 ,,,,休息 return 真正的 if __name__ ==, & # 39; __main__ # 39;: ,one_str_list=[& # 39; ({}) & # 39;, & # 39; ({[& lt;《》祝辞]})& # 39;,& # 39;[(]){}& # 39;& # 39;{{{{{{& # 39;& # 39;(({}))& # 39;,& # 39;}{(())& # 39; ,for one_str  one_str_list拷贝: if 才能bracket_mathch (one_str): ,,print one_str, & # 39;正确& # 39; 其他的才能: ,,print one_str, & # 39;错误& # 39; ,tmp=& # 39; {} ({() () [] & lt; {{(((((()) () () () {} [] {} [] () & lt;祝辞]]]]}}祝辞}]& # 39; ,print bracket_mathch (tmp)
结果如下:
关于“Python怎么实现求解括号匹配问题”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看的到。