Uva 673平衡的括号

Uva 673平衡的括号

题目描述:

思路:

就是普通的括号匹配问题,用栈来模拟操作。需要注意的地方是,有输入为空的情况,所以不要用cin来读取,而是用getline

代码:

#include <iostream>
#include <stack>
#include <string>
#include <sstream>
using namespace std;

int main()
{
    //freopen("uva673_in.txt", "r", stdin);
    //freopen("uva673_out.txt", "w", stdout);
    string s;
    getline(cin, s);
    stringstream ss(s);
    int n ; ss >> n;
    while(n--){
        string s; getline(cin, s);  
        stack<char> res;
        int failed = 0;
        for(int i = 0; i < s.length(); ++i){
            if(s[i] == ')'){
                if(!res.empty()) {
                    char c = res.top();
                    if(c == '(') res.pop();
                    else { failed = 1; break;}
                }
                else { failed = 1; break;} 
            }else if(s[i] == ']'){
                if(!res.empty()){
                    char c = res.top();
                    if(c == '[') res.pop();
                    else { failed = 1; break;}
                }
                else { failed = 1; break;}
            }
            else res.push(s[i]);
        }
        if(res.empty() && !failed) cout << "Yes\n";
        else cout << "No\n";
    }
}

猜你喜欢

转载自www.cnblogs.com/patrolli/p/11291083.html