给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。
解题思路
这一题可以利用栈的思想,
- 当遇到
‘(’'{''['字符串时入栈 - 当遇到
‘(’'{''['字符串时先判断一下是否是对称的括号- 如果是对称的则出栈
- 如果不对称则返回false
- 执行完,当栈为空时则是有效括号
代码
var isValid = function(s) {
let stack = [];
let map = new Map([
[')', '('],
['}', '{'],
[']', '[']
]
)
for (k of s) {
if (map.has(k)) {
if (stack[stack.length-1] !== map.get(k)) return false
stack.pop();
} else {
stack.push(k)
}
}
return !stack.length;
};