zoukankan      html  css  js  c++  java
  • 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;i<end+1;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;
                else
                    return false;
            }
            
            stack<int> str;
            while(start<end+1)//要等于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();
                    else
                        return false;//否则假
                }
                start++;
            }
            
            if(!str.empty())//结束后检测栈空不,不然对于全是左括号的就通过了
                return false;
            return true;
        }
    };

    分析:

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

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

  • 相关阅读:
    2019.04.19 坦克大战
    2019.04.18 异常和模块
    2019.04.17 面向对象编程篇207
    fork操作时的copy-on-write策略
    Redis阻塞原因
    Redis持久化-fork操作
    Redis持久化-AOF重写
    Redis持久化-aof
    Redis持久化
    Shopify给左右两边布局的banner图加链接,链接失败
  • 原文地址:https://www.cnblogs.com/CJT-blog/p/10583094.html
Copyright © 2011-2022 走看看