题解 | #有效括号序列#

有效括号序列

https://www.nowcoder.com/practice/37548e94a270412c8b9fb85643c8ccc2

#include <cstring>
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param s string字符串 
     * @return bool布尔型
     */

    bool isValid(string s) {
        // write code here
        stack<char> st;
        for(int i=0;i<s.length();i++){
            if(s[i]=='('){
                st.push(')');
            }
            else if(s[i]=='{'){
                st.push('}');
            }
            else if(s[i]=='['){
                st.push(']');
            }
            else if(st.size()==0||st.top()!=s[i]){
                return false;
            }
            else{
                st.pop();
            }
        }
        if(st.size()==0){
            return true;
        }
        else{
            return false;
        }
    }
};

括号类型不匹配的类型有3种:

1.字符串没遍历完但是栈空了

2.当前括号类型和栈顶元素不相同直接可判断字符串不匹配

前两种都是在字符扫描过程中直接可判断字符串不匹配的情况

3.字符串遍历结束后栈不为空

想了一下,其实只按照第三种来判断也是可以的。

入栈的情况,扫描到左括号类型(,{,【都给他入栈对应的右括号类型。

出栈的情况,当前字符类型等于栈顶元素

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务