给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串 s ,判断字符串是否有效。

    有效字符串需满足:

    左括号必须用相同类型的右括号闭合。
    左括号必须以正确的顺序闭合。

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/valid-parentheses
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
    解答

    1. /**
    2. * @param {string} s
    3. * @return {boolean}
    4. */
    5. var isValid = function (s) {
    6. let stack = []
    7. let leftToRight = {
    8. "{":"}",
    9. "[":"]",
    10. "(":")"
    11. }
    12. for (let i = 0; i<s.length; i++) {
    13. let char = s[i]
    14. console.log('i', i)
    15. if (char === '[' || char === '{' || char === '(') {
    16. stack.push(leftToRight[char])
    17. } else {
    18. if (stack.pop() !== char) {
    19. return false
    20. }
    21. }
    22. }
    23. return !stack.length
    24. }

    我尝试了接近两个小时都没做出来,最后看了答案才发现,最简单的逻辑就是入栈和出栈的符号 一定是相等的;这样才能确保符号的成双成对的;思路很重要