首页 > leecode第二十题(有效的括号)

leecode第二十题(有效的括号)

 

class Solution {
public:bool isValid(string s) {int start=0,end=s.size()-1;if(end==-1)//万万没想到,他把空字符串当成true了return true;int ss[end+1];//歪方法,把左括号全部<0,右括号都>0,且同类型符号绝对值一样for(int i=0;i1;i++){if(s[i]=='(')ss[i]=-1;else if(s[i]==')')ss[i]=1;else if(s[i]=='{ ')ss[i]=-2;else if(s[i]=='}')ss[i]=2;else if(s[i]=='[')ss[i]=-3;else if(s[i]==']')ss[i]=3;elsereturn false;}stack<int> str;while(start1)//要等于end啊,老是忘
        {if(ss[start]<0)//如果小于0就入栈
                str.push(ss[start]);if(ss[start]>0)//如果大于0,判断栈空不空,不空的话栈顶和当前数是否编号
            {if(!str.empty() && ss[start]==-1*(str.top()))str.pop();elsereturn false;//否则假
            }start++;}if(!str.empty())//结束后检测栈空不,不然对于全是左括号的就通过了return false;return true;}
};

 

分析:

一个简单题啊,还是情况没分析到位,一开始思路错了。

后来思路对了,但是程序总是有毛病,但是总得来说还是情况没分析到位。

转载于:https://www.cnblogs.com/CJT-blog/p/10583094.html

更多相关: