7-2 括号匹配 (25分)

Posted luoyoooo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 }

以上是关于7-2 括号匹配 (25分)的主要内容,如果未能解决你的问题,请参考以下文章

7-2 列车调度 (25 分)

括号匹配问题(区间dp)

如何理解这段代码片段中的两对括号?

表达式转换 (25 分)

浙大保研2019年上机题 7-2 Zigzag Sequence (25分)

7-2 排座位 (25 分)