20. Valid Parentheses




/*

1. 第一个字符入栈

2. 第二个字符看看和栈的top是否匹配,如果匹配,出栈。如果不匹配,入栈。

3. 循环1,2

4. 栈空,整体匹配,否则,整体不匹配。

*/

class Solution {
public:
    bool isValid(string s) {
        if(s.size() == 0) return true;
        if(s.size()%2 != 0) return false;
        stack<char> st;
        map<char,char> mp={{']','['},{'}','{'},{')','('}};
        st.push(s[0]);
        
        for(int i = 1; i<s.size(); i++)
        {
            if(st.empty()) st.push(s[i]);  // (){} 如果没有这条,读到{时,栈为空,st.top()会出错。
            else{
                 if(mp[s[i]] != st.top())  st.push(s[i]);
                 else st.pop();
            }
           
        }
        return st.empty() ? true:false;
    }

};


阅读更多
个人分类: 亚马逊 Leecode
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭