leetCode之栈相关
2020-09-26 本文已影响0人
Benzic
首页目录 点击查看
第一题
- 难度:简单
- 题目: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