
思路分析:
- 括号需要有效:
- 满足是成对的;
- 且左括号在前,右括号在后;
- 位置是相对应的的。
- 实现思路:可以用一个栈来处理,循环处理字符串当遇到左括号,加入到栈中;当遇到右括号,判断栈顶的左括号与右括号是否对应,对应则移除左括号,不对应说明不合法;最后判断栈里面是否还剩余括号即可。
/**
* @param {string} s
* @return {boolean}
*/
var isValid = function(s) {
const stack = [];
const map = {
')': '(',
'}': '{',
']': '[',
};
for(let i = 0; i < s.length; i++) {
const ele = s.substr(i, 1);
// 如果是左括号添加进栈中
if (!map[ele]) {
stack.push(ele)
}
// 如果不是左括号,判断栈顶是不是对应的右括号,如果不是则不匹配返回错误
// 如果是则匹配移除掉即可
if (map[ele] && map[ele] !== stack.pop()) {
return false;
}
}
// 判断比较完的栈是否空的,空的则都为有效括号
return stack.length === 0;
};
描述
思路分析: