给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-parentheses
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解答
/*** @param {string} s* @return {boolean}*/var isValid = function (s) {let stack = []let leftToRight = {"{":"}","[":"]","(":")"}for (let i = 0; i<s.length; i++) {let char = s[i]console.log('i', i)if (char === '[' || char === '{' || char === '(') {stack.push(leftToRight[char])} else {if (stack.pop() !== char) {return false}}}return !stack.length}
我尝试了接近两个小时都没做出来,最后看了答案才发现,最简单的逻辑就是入栈和出栈的符号 一定是相等的;这样才能确保符号的成双成对的;思路很重要
