最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 20. 有效的括号|刷题打卡

    正文概述 掘金(ClyingDeng)   2021-04-06   433

    一、题目描述:

    给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
    有效字符串需满足:

    • 左括号必须用相同类型的右括号闭合。
    • 左括号必须以正确的顺序闭合。

    示例 1:

    输入:s = "()"
    输出:true

    示例 2:

    输入:s = "()[]{}"
    输出:true

    示例 3:

    输入:s = "(]"
    输出:false

    提示:

    1 <= s.length <= 10^4
    s 仅由括号 '()[]{}' 组成

    二、思路分析:

    题目很简单,使用一个栈便可以解决。根据提示可知,字符串长度大于等于1,所以可以不考虑为0的情况。

    • 考虑'(','[','{'这三种情况,符合要求时,应该将其压栈;
    • 符合')','}',']'这三种情况时,应该判断此时的栈顶是否于闭合的三个字符相匹配。
      • 匹配。例如:栈顶为'(',当前字符为')'时,就应该将'('出栈
      • 不匹配。直接不满足要求

    例子:

    s = "{[]}"

    20. 有效的括号|刷题打卡 最后,根据栈是否为空进行返回判断。如果不符合匹配条件可直接返回false。

    三、AC 代码:

    function isValid(s: string): boolean {
      let stack = [];
      stack[0] = s[0];
      for (let i = 1; i < s.length; i++) {
        switch (s[i]) {
          case "(":
            stack.push("(");
            break;
          case "[":
            stack.push("[");
            break;
          case "{":
            stack.push("{");
            break;
          case ")":
            if (stack[stack.length - 1] === "(") {
              stack.pop();
            } else {
              return false;
            }
            break;
          case "]":
            if (stack[stack.length - 1] === "[") {
              stack.pop();
            } else {
              return false;
            }
            break;
          case "}":
            if (stack[stack.length - 1] === "{") {
              stack.pop();
            } else {
              return false;
            }
            break;
        }
      }
      return stack.length ? false : true;
    };
    

    四、总结:

    利用栈解决字符串匹配问题只是其中一种解决方法,还可以使用对象的key、value来解决。


    起源地下载网 » 20. 有效的括号|刷题打卡

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元