20. 有效的括号|刷题打卡

290 阅读1分钟

一、题目描述:

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

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。 示例 1:

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

示例 2:

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

示例 3:

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

示例 4:

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

示例 5:

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

二、思路分析:

  • 声明一个数组arr来存储字符串中的元素
  • 在遍历字符串的过程中判断 arr 的最后一个元素是否和 s.charAt(i) 可以组成一对括号。
  • 如果可以组成一对括号就 arr.pop()
  • 否则 arr.push(s.charAt(i)).
  • 最后判断数组是否为空,如果数组为空则s有效的括号,否则不是

三、AC 代码:

/**
 * @param {string} s
 * @return {boolean}
 */
var isValid = function(s) {
    let arr = s? [s.charAt(0)] : [];
    for(let i = 1; i < s.length; i++) {
        let str = s.charAt(i);
        switch(str) {
            case ']':
                str = '[';
                break;
            case '}':
                str = '{';
                break;
            case ')':
                str = '(';
                break;
        }
        if(arr[arr.length - 1] === str && s.charAt(i) !== str) {
            arr.pop();
        } else {
            arr.push(s.charAt(i));
        }
    }
    return arr.length === 0
};

四、总结:

有效的括号.png

本文正在参与「掘金 2021 春招闯关活动」, 点击查看 活动详情