Leecode有效的括号

给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。

有效字符串需满足:

左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。

题目比较简单,主要使用的是栈先进后出的结构特性。 

class Solution {
public:
    bool isValid(string s) {
        if(s.size()%2 != 0) return false;
        if(s.size() == 0) return true;
        stack<char> sta; 
        for(int i = 0; i < s.size(); i++) {
            if(s[i]=='{'||s[i]=='['||s[i]=='('){
                sta.push(s[i]);
            } else {
                cout<< s[i] << ',';
                if(sta.empty()) return false;
                if(s[i] =='}'&&(sta.top() !='{' )){
                   return false;
                } else if(s[i] == ']'&&(sta.top() != '[')) {
                    return false;
                }else if(s[i]==')' &&(sta.top() != '(' ) ) {
                    return false;                  
                } else {
                    sta.pop();
                }
            } 
        }
        return sta.empty();
    }
};

 

posted @ 2019-07-25 20:49  卷积  阅读(230)  评论(0编辑  收藏  举报