20. 有效的括号
难度简单3239收藏分享切换为英文接收动态反馈
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
-
左括号必须用相同类型的右括号闭合。
-
左括号必须以正确的顺序闭合。
示例 1:
输入:s = "()"
输出:true
示例 2:
输入:s = "()[]{}"
输出:true
示例 3:
输入:s = "(]"
输出:false
示例 4:
输入:s = "([)]"
输出:false
示例 5:
输入:s = "{[]}"
输出:true
提示:
1 <= s.length <= 104s仅由括号'()[]{}'组成
题解:
// 思路: 使用栈来实现判断,栈是先进后出的
// 时间复杂度 O(n)
// 空间复杂度 O(n)
/**
* @param {string} s
* @return {boolean}
*/
var isValid = function (s) {
if (s.length % 2 === 1) {
return false;
}
const stack = [];
const obj = {
'(': ')',
'[': ']',
'{': '}'
};
for (const str of s) {
if (str in obj) {
stack.push(obj[str]);
} else {
if (str !== stack.pop()) {
return false;
}
}
}
return !stack.length;
};