leetCode之栈相关

首页目录 点击查看

第一题

  • 难度:简单
  • 题目:20. 有效的括号
    给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
    有效字符串需满足:
    左括号必须用相同类型的右括号闭合。
    左括号必须以正确的顺序闭合。
    注意空字符串可被认为是有效字符串。
    示例:
输入: "()"
输出: true

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

输入: "(]"
输出: false

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

解题思路

  • 这道题还是比较简单的,创建一个数组,把左半边的符号依次放进去,遇到右边的就从已有的数组取最后一个拿出来比较,如果是对应的则是对的,如果不对应则直接返回false,知道最后清空数组。

我的答案

var isValid = function (s) {
    let arr = []
    if (s.length % 2 !== 0) {
        return false
    }
    for (let i = 0; i <= s.length - 1; i++) {
        switch (s[i]) {
            case "(":
            case "[":
            case "{":
                arr.push(s[i]);
                break;
            case ")":
                if (arr.pop() !== '(') return false
                break;
            case "]":
                if (arr.pop() !== '[') return false
                break;
            case "}":
                if (arr.pop() !== '{') return false
                break;
            default:
                break;
        }
    }
    return !arr.length
};
  • 时间复杂度:O(N)
  • 空间复杂度: O(N)


    image.png

你可能感兴趣的:(leetCode之栈相关)