C++括号匹配检测(用栈)
输入一串括号,包括圆括号和方括号,()[],判断是否匹配,即([]())或[([][])]为匹配的正确的格式,[(])或([())为不匹配的格式。
1 #include<iostream> 2 #include<string> 3 #include<stack> 4 using namespace std; 5 int main() 6 { 7 string str; 8 getline(cin,str); 9 stack<char>s; 10 for(int i=0;i<str.size();i++) 11 { 12 switch(str[i]) 13 { 14 case '(':s.push(str[i]); 15 break; 16 case '[':s.push(str[i]); 17 break; 18 case ')':if(!s.empty()&&(s.top()=='(')) 19 { 20 s.pop(); 21 break; 22 } 23 else 24 goto breakLoop; 25 case ']':if(!s.empty()&&(s.top()=='[')) 26 { 27 s.pop(); 28 break; 29 } 30 else 31 goto breakLoop; 32 } 33 34 } 35 36 if(s.empty()) 37 cout<<"括号匹配"; 38 else 39 cout<<"不匹配"; 40 return 0; 41 breakLoop:cout<<"不匹配"; 42 return 0; 43 }
程序有不完美的地方,还望批评指正。