5.括号匹配问题

2.分析问题

好吧,这道题之前见过,所以也谈不上分析,直接用栈的思想去解决,当时左边括号时直接压入,如果时右边括号时,看看顶部的元素是不是对应的左括号,如果是就弹出,否则压入该右括号。最后统计栈是不是非零,如果是非零就返回true.代码如下:

    bool isValid(string s) 
    {   /*s代表传入字符串*/
        stack<char> sta;//栈
        int size=s.size();
        for(int i=0;i<size;i++)
        {
            switch (s[i])//写的比较复杂,就将一下
            {
            case ')':if( !sta.empty()&&sta.top()=='(') {sta.pop();break;} 
            case ']':if (!sta.empty()&&sta.top()=='[') {sta.pop();break;} 
            case '}':if (!sta.empty()&&sta.top()=='{') {sta.pop();break;} 
            case '(':
            case '[':
            case '{':sta.push(s[i]);break;
            default :break;
            }
            
        }
        return sta.size()==0? true:false;
    }

猜你喜欢

转载自blog.csdn.net/feng__shuai/article/details/80980237
今日推荐