We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
20.有效的括号 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。
示例 1:
输入: "()" 输出: true
示例 2:
输入: "()[]{}" 输出: true
示例 3:
输入: "(]" 输出: false
示例 4:
输入: "([)]" 输出: false
示例 5:
输入: "{[]}" 输出: true
https://leetcode-cn.com/problems/valid-parentheses
提前记录好左括号类型 (, {, [和右括号类型), }, ]的映射表,当遍历中遇到左括号的时候,就放入栈 stack 中(其实就是数组),当遇到右括号时,就把 stack 顶的元素 pop 出来,看一下是否是这个右括号所匹配的左括号(比如 ( 和 ) 是一对匹配的括号)。
(, {, [
), }, ]
stack
pop
(
)
当遍历结束后,栈中不应该剩下任何元素,返回成功,否则就是失败。
/** * @param {string} s * @return {boolean} */ let isValid = function (s) { let sl = s.length if (sl % 2 !== 0) return false let leftToRight = { "{": "}", "[": "]", "(": ")", } // 建立一个反向的 value -> key 映射表 let rightToLeft = createReversedMap(leftToRight) // 用来匹配左右括号的栈 let stack = [] for (let i = 0; i < s.length; i++) { let bracket = s[i] // 左括号 放进栈中 if (leftToRight[bracket]) { stack.push(bracket) } else { let needLeftBracket = rightToLeft[bracket] // 左右括号都不是 直接失败 if (!needLeftBracket) { return false } // 栈中取出最后一个括号 如果不是需要的那个左括号 就失败 let lastBracket = stack.pop() if (needLeftBracket !== lastBracket) { return false } } } if (stack.length) { return false } return true } function createReversedMap(map) { return Object.keys(map).reduce((prev, key) => { const value = map[key] prev[value] = key return prev }, {}) }
The text was updated successfully, but these errors were encountered:
No branches or pull requests
20.有效的括号
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例 1:
示例 2:
示例 3:
示例 4:
示例 5:
https://leetcode-cn.com/problems/valid-parentheses
思路
提前记录好左括号类型
(, {, [
和右括号类型), }, ]
的映射表,当遍历中遇到左括号的时候,就放入栈stack
中(其实就是数组),当遇到右括号时,就把stack
顶的元素pop
出来,看一下是否是这个右括号所匹配的左括号(比如(
和)
是一对匹配的括号)。当遍历结束后,栈中不应该剩下任何元素,返回成功,否则就是失败。
The text was updated successfully, but these errors were encountered: