美文网首页
leetcode 20

leetcode 20

作者: xbinng | 来源:发表于2017-10-22 10:26 被阅读0次

    思路一:
    将字符串的左侧字符入栈,遇到右侧字符则与栈顶元素对比,看是否匹配。
    最后栈一定为空。

    bool isValid(std::string s){
        std::stack<char> st;
        for(auto c:s){
            switch (c){
                case '{':
                case '[':
                case '(':
                    st.push(c);
                    break;
                case ')':
                    if(st.empty()== true||st.top()!='(')
                        return false;
                    else
                        st.pop();
                    break;
                case '}':
                    if(st.empty()== true||st.top()!='{')
                        return false;
                    else
                        st.pop();
                    break;
                case ']':
                    if(st.empty()== true||st.top()!='[')
                        return false;
                    else
                        st.pop();
                    break;
                default:
                    break;
            }
    
    
        }
        return st.empty();
    
    }
    

    简单的判断字符串的左右符号{[()]}是否匹配
    运用栈解决。
    还有一种思路:
    字符串的‘最后’一个左侧字符(如'{')必然会接着该右侧字符(如'}'),所以只要将右侧字符入栈,然后将栈顶字符逐一与右侧字符串对比。

    相关文章

      网友评论

          本文标题:leetcode 20

          本文链接:https://www.haomeiwen.com/subject/gtdguxtx.html