有效括号

class Solution {
public:
    bool isValid(string s) {
        int flag=1;         //标志位
        int len=s.size();
        if(len==0)
        {
            return true;
        }                           //判断输入是否为空
        char str[len];
        int top=0;          //栈的顶部位置
        for(int j=0;j<len;j++)
        {
            if(s[j]=='(')
            {
                str[top]='(';           //入栈
                top++;
            }
            if(s[j]=='[')
            {
                str[top]='[';               //入栈
                top++;
            }
            if(s[j]=='{')
            {
                str[top]='{';               //入栈
                top++;
            }
            if(s[j]==')')
            {
                if(top<1)
                {
                    return false;                 //出栈前要检验
                }
                top--;
                if(str[top]!='(')
                {
                    flag=0;
                    break;
                }
            }
            if(s[j]==']')
            {
                if(top<1)
                {
                    return false;               //出栈前要检验
                }
                top--;      
                if(str[top]!='[')
                {
                    flag=0;
                    break;
                }
            }
            if(s[j]=='}')
            {
                if(top<1)
                {
                    return false;                   //出栈前要检验
                }
                top--;
                if(str[top]!='{')
                {
                    flag=0;
                    break;
                }
            }
        }
        if(top==0&&flag==1)                 //判断标志位,判断是否在栈底(栈内是否为空)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
};

猜你喜欢

转载自www.cnblogs.com/wzhtql/p/10225681.html