[LeetCode.20]有效的括号

思路,依次将这些字符入栈,判断栈顶元素与当前元素是否是对应上的,是则pop,不是则入栈,到最后判断栈是否为空。

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

别人的思路:

这种方法能够更快的判断不符合条件的字符串,不需要将字符串遍历完成。

class Solution {  
public:  
    bool isValid(string s) {  
        stack<char> paren;  
        for (char& c : s) {    //C++11中的range-based for(基于范围的循环)
            switch (c) {  
                case '(':   
                case '{':   
                case '[': paren.push(c); break;  
                case ')': if (paren.empty() || paren.top()!='(') return false; else paren.pop(); break;  
                case '}': if (paren.empty() || paren.top()!='{') return false; else paren.pop(); break;  
                case ']': if (paren.empty() || paren.top()!='[') return false; else paren.pop(); break;  
                default: ; // pass  
            }  
        }  
        return paren.empty() ;  
    }  
};

另外一种思路:

class Solution {  
public:  
    bool isValid(string s) {  
        stack<char> result;  
        for(auto & a:s){       //C++11中的range-based for(基于范围的循环)
            if(a=='(') result.push(')');  
            else if(a=='{') result.push('}');  
            else if(a=='[')  result.push(']');  
            else if(result.empty()||result.top()!=a)//这里直接出栈判断  
                return false;  
            else result.pop();  
        }  
        return result.empty();  
    }
};

转自:https://blog.csdn.net/m0_37693059/article/details/76691491

如有不当之处,请联系我:[email protected]

猜你喜欢

转载自blog.csdn.net/weixin_39460182/article/details/80287779