zoukankan      html  css  js  c++  java
  • 20、有效的括号 | JS-栈的应用

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

    有效字符串需满足:

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

    示例 1:

    输入:s = "()"
    输出:true
    示例 2:

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

    输入:s = "(]"
    输出:false
    示例 4:

    输入:s = "([)]"
    输出:false
    示例 5:

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

    题解:

    可以用字典Map

     1 /**
     2  * @param {string} s
     3  * @return {boolean}
     4  */
     5 var isValid = function(s) {
     6     if(s.length % 2 ===1) return false;
     7     const stack = [];
     8     const map = new Map();
     9     map.set('(',')');
    10     map.set('{','}');
    11     map.set('[',']');
    12     for(let i=0; i<s.length; i+=1){
    13         const c = s[i];
    14         if(map.has(c)) {
    15             stack.push(c);
    16         }else{
    17             const t = stack[stack.length - 1];
    18             if(map.get(t) === c) {
    19                 stack.pop();
    20             }else{
    21                 return false;
    22             }
    23         }
    24     }
    25     return stack.length === 0;
    26 };
     1 /**
     2  * @param {string} s
     3  * @return {boolean}
     4  */
     5 var isValid = function(s) {
     6     if (s.length % 2 ===1) { return false; } //如果是奇数说明一定不匹配
     7     const stack = [];
     8     for(let i=0;i<s.length;i++){
     9         const c = s[i];  //拿到字符
    10         if(c ==='(' || c ==='{' || c === '[') {
    11             stack.push(c);
    12         } else {
    13             const t = stack[stack.length -1]; //t拿到栈顶
    14             if(
    15                 (t === '(' && c === ')') ||
    16                 (t === '{' && c === '}') ||
    17                 (t === '[' && c === ']') 
    18             ) {
    19                 stack.pop();
    20             } else {
    21                 return false;
    22             }
    23         }
    24     }
    25     return stack.length === 0;
    26 };
  • 相关阅读:
    Gradview读取Excel表并插入数据库
    键盘上每个键作用!!! (史上最全的)­
    经典SQL语句大全
    [转帖] 一个老乞丐的一句话,震惊全中国人!
    GridView控件实现自定义数字、时间、货币字符串格式
    .net连接数据库相关
    论坛Email验正的正则表达式升级
    自定义DBHelper类
    在线编辑器CuteEditor使用方法
    asp.net中验证码的生成
  • 原文地址:https://www.cnblogs.com/oaoa/p/14822028.html
Copyright © 2011-2022 走看看