7-2 括号匹配 (25分)
给定一串字符,不超过100个字符,可能包括括号、数字、字母、标点符号、空格,编程检查这一串字符中的( ) ,[ ],{ }是否匹配。
输入格式:
输入在一行中给出一行字符串,不超过100个字符,可能包括括号、数字、字母、标点符号、空格。
输出格式:
如果括号配对,输出yes,否则输出no。
输入样例1:
sin(10+20)
输出样例1:
yes
输入样例2:
{[}]
输出样例2:
no
1 #include<iostream> 2 #include<stack> 3 #include<string> 4 using namespace std; 5 6 bool judge(string s) 7 { 8 stack<char>stk; 9 for (int i = 0; i < s.length(); i++) 10 { 11 switch (s[i]) 12 { 13 case '(':stk.push(s[i]); 14 break; 15 case '[':stk.push(s[i]); 16 break; 17 case '{':stk.push(s[i]); 18 break; 19 case ')': 20 if (stk.empty()) 21 return false; 22 if (stk.top() == '(') 23 stk.pop(); 24 else 25 return false; 26 break; 27 case ']': 28 if (stk.empty()) 29 return false; 30 if (stk.top() == '[') 31 stk.pop(); 32 else 33 return false; 34 break; 35 case '}': 36 if (stk.empty()) 37 return false; 38 if (stk.top() == '{') 39 stk.pop(); 40 else 41 return false; 42 break; 43 } 44 } 45 return stk.empty(); 46 } 47 int main() 48 { 49 string s; 50 getline(cin,s); 51 if (judge(s)) 52 cout << "yes"; 53 else 54 cout << "no"; 55 }