Luoyoooo

与其感慨路难行,不如马上出发

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 }
posted @ 2020-01-19 22:09  Luoyoooo  阅读(1583)  评论(0编辑  收藏  举报