[leetcode javascript解题]Valid Parentheses
2016-12-21 19:41
483 查看
leetcode 20题 Valid Parentheses 描述如下
Given a string containing just the characters
The brackets must close in the correct order,
解题思路其实比较简单就是建立一个栈结构,储存”([{“。首先如果字符串的length为奇数,显然可以直接返回false了。
接着是优化代码。个人是很讨厌冗长的switch语句,所以用正则表达式和charCodeAt来处理了,注意到
循环过程中,如果条件匹配就出栈,不匹配的话基本就意味着有多余的符号,直接返回false。如果都匹配,还要查看最终的判断条件也就是stack中是否还有元素剩余。
Given a string containing just the characters
'(',
')',
'{',
'}',
'['and
']', determine if the input string is valid.
The brackets must close in the correct order,
"()"and
"()[]{}"are all valid but
"(]"and
"([)]"are not.
解题思路其实比较简单就是建立一个栈结构,储存”([{“。首先如果字符串的length为奇数,显然可以直接返回false了。
接着是优化代码。个人是很讨厌冗长的switch语句,所以用正则表达式和charCodeAt来处理了,注意到
'(',
')',
'{',
'}',
'['以及
']', 的 Unicode 编码分别为40,41,91,93,123和125。所以在判断时可以根据同样的括号类型编码值相减小于等于2的原理来判断。代码看上去就简洁了很多。
循环过程中,如果条件匹配就出栈,不匹配的话基本就意味着有多余的符号,直接返回false。如果都匹配,还要查看最终的判断条件也就是stack中是否还有元素剩余。
/** * @param {string} s * @return {boolean} */ var isValid = function(s) { if (s.length % 2 === 1 || /[\}\]\)]/.test(s[0])) { return false; } var stack = []; for (var i = 0; i < s.length; i++) { if (/[\{\[\(]/.test(s[i])) { stack.push(s[i]); } else { var len = stack.length; if (Math.abs(stack[len - 1].charCodeAt(0) - s[i].charCodeAt(0)) <= 2) { stack.pop(); } else { return false; } } } if (stack.length === 0) { return true; } else { return false; } };
相关文章推荐
- [LeetCode] Longest Valid Parentheses 解题报告
- leetCode 32.Longest Valid Parentheses (有效的最大括号) 解题思路和方法
- leetCode 20.Valid Parentheses (有效的括号) 解题思路和方法
- Leetcode Valid Parentheses 解题报告
- [leetcode] 32. Longest Valid Parentheses 解题报告
- leetcode解题报告20. Valid Parentheses
- LeetCode解题-#20-Valid Parentheses
- leetcode解题方案--020--Valid Parentheses
- [Leetcode] 20. Valid Parentheses 解题报告
- leetCode 20.Valid Parentheses (有效的括号) 解题思路和方法
- [leetcode javascript解题]Generate Parentheses
- [leetcode] 20. Valid Parentheses 解题报告
- [LeetCode] Valid Parentheses 解题报告
- [LeetCode][JavaScript]Longest Valid Parentheses
- [LeetCode][JavaScript]Valid Parentheses
- LeetCode Longest Valid Parentheses 解题报告
- [LeetCode] Valid Parentheses 解题报告
- LeetCode解题报告—— Longest Valid Parentheses
- 【LeetCode】Valid Parentheses 解题报告
- [LeetCode] Valid Parentheses 解题报告