括号匹配算法
Posted Eastruo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了括号匹配算法相关的知识,希望对你有一定的参考价值。
括号匹配,算是字符串处理中的一个问题,比较常见,这里就总结一下大体的思路,附赠我的个人代码。
大体思路:数据结构选用栈,读到左括号时入栈,读到右括号时判断是否匹配,匹配则左括号出栈,非括号字符则继续往下读
代码如下:
1 #include <iostream>
2 #include <cstring>
3 #include <string>
4 #include <stack>
5
6 using namespace std;
7 bool is_Match(string str){
8 stack<char> s;
9 for(int i=0;i<str.length();i++){
10 switch(str[i])
11 {
12 case ‘{‘:
13 case ‘[‘:
14 case ‘<‘:s.push(str[i]);break;
15 case ‘}‘:
16 case ‘]‘:
17 case ‘>‘:char temp=str[i];
18 if((!s.empty())&&(temp==‘}‘&&s.top()==‘{‘)||(temp==‘]‘&&s.top()==‘[‘)||(temp==‘>‘&&s.top()==‘<‘)){
19 s.pop();
20 }
21 else{
22 cout<<"括号不匹配"<<endl;
23 return false;
24 }
25 }
26 }
27 if(!s.empty()){
28 return false;
29 }
30 else{
31 return true;
32 }
33 }
34
35 int main()
36 {
37 bool ans=is_Match("<,34342}>");
38 cout<<ans<<endl;
39 }
以上是关于括号匹配算法的主要内容,如果未能解决你的问题,请参考以下文章
imooc数据结构探险-栈篇 栈应用括号匹配二 由群友启发改良james_yuan老师算法