zoukankan      html  css  js  c++  java
  • leetcode 20 有效的括号

    思路:利用栈先进去的后处理,当是一个右括号就判断栈顶是否是匹配的左括号,如果不是直接返回false,如果匹配,弹出栈顶

    如果是左括号就入栈

    第一次

     1 /**
     2  * @param {string} s
     3  * @return {boolean}
     4  */
     5 var isValid = function(s) {
     6   const len = s.length
     7   if(len % 2 != 0) return false
     8   let stack = [] 
     9   let L = ['(','[','{']
    10   let R = [')',']','}']
    11   for(let i = 0; i< len; i++){
    12     if(L.includes(s[i])){
    13       stack.push(s[i])
    14     }else{
    15       let x = R.indexOf(s[i])
    16       if(L[s[i]] != stack.pop()){
    17         return false
    18       }
    19     }
    20   }
    21   return stack.length ? false:true
    22 };

    第二次

    var isValid = function (s) {
      const n = s.length;
      if (n % 2 === 1) {
        return false;
      }
      const pairs = new Map([
        [')', '('],
        [']', '['],
        ['}', '{']
      ]);
      const stk = [];
      for(let i = 0; i < n; i++){
        if(pairs.has(s[i])){
          if(pairs.get(s[i]) !== stk[stk.length - 1] ){
            return false
          }else{
            stk.pop()
          }
        }
        else{
          stk.push(s[i])
        }
      }
      return !stk.length;
    };
  • 相关阅读:
    如何在自定义端口上运行 Spring Boot 应用程序?
    FileUpload拦截器
    UI标签
    OGNL
    你对测试最大的兴趣在哪里?为什么?
    举例说明同步和异步。
    git 克隆分支
    JQuery 选择器
    JQuery对象和Dom对象
    简单的JQuery之Ready
  • 原文地址:https://www.cnblogs.com/jiaobaba/p/14407522.html
Copyright © 2011-2022 走看看