美文网首页
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