PTA括号匹配

一、题目描述

  

 

 二、解题思路

  这个题打的时候没写出来,脑子抽了,很久没用栈写过题了,所以非常sb。思路非常简单,就是当栈不为空时,匹配输入的元素和栈顶,如果匹配了就弹出栈顶,不然就加入栈顶。最后如果栈区元素不为空,则不匹配。

三、代码实现

 1 #include "bits/stdc++.h"
 2 using namespace std;
 3 int main()
 4 {
 5     int t;
 6     cin >> t;
 7     while(t--){
 8         string s;
 9         cin >>s ;
10         stack <char> ans;
11         for(auto &u:s){
12             if(ans.empty())
13                 ans.push(u);
14             else{
15                 if(ans.top() == '(' && u == ')')
16                     ans.pop();
17                 else if(ans.top() == '[' && u == ']')
18                     ans.pop();
19                 else if(ans.top() == '{' && u == '}')
20                     ans.pop();
21                 else
22                     ans.push(u);
23             }
24         }
25         if(ans.size() == 0)
26             cout << "Yes" << endl;
27         else
28             cout << "No" << endl;
29          while(!ans.empty()){
30             ans.pop();
31         }
32     }
33     return 0;
34 }
posted @ 2022-03-15 15:09  scannerkk  阅读(225)  评论(0)    收藏  举报