-
Notifications
You must be signed in to change notification settings - Fork 86
Open
Description
原题链接:https://leetcode-cn.com/problems/valid-parentheses/
解题思路:
- 遍历数组,遇到左括号时,将对应的右括号存入栈。
- 遇到右括号时,将栈顶元素pop,查看两者是否相同。
- 若不相同,表示存在无效括号。
- 遍历完成后,查看字符串长度,如果字符串不为空,表示存在无效括号,如'{'。
/**
* @param {string} s
* @return {boolean}
*/
var isValid = function (s) {
let stack = [];
let map = {
'(': ')',
'[': ']',
'{': '}',
};
for (const char of s) {
// 遇到左括号时,向栈中存入右括号
if (map[char]) {
stack.push(map[char]);
} else if (stack.pop() !== char) {
// 遇到右括号时,判断当前括号是否相等。
// 如果不相等则表示遇到了无效括号
return false;
}
}
// 退出循环时,如果栈不为空,则表示存在无效括号
// 此处为了避免字符串长度为奇数的情况,如'{'
return !stack.length;
};
Metadata
Metadata
Assignees
Labels
No labels