题目描述

https://leetcode-cn.com/problems/valid-parentheses/

代码

  1. /**
  2. * @param {string} s
  3. * @return {boolean}
  4. */
  5. var isValid = function (s) {
  6. /** 若长度为奇数,括号不可能全部闭合,直接false */
  7. if (s.length % 2 === 1) {
  8. return false
  9. }
  10. const stack = []
  11. const map = new Map
  12. map.set('(', ')')
  13. map.set('{', '}')
  14. map.set('[', ']')
  15. const len = s.length
  16. for (let i = 0; i < s.length; i++) {
  17. const c = s[i]
  18. if (map.has(c)) {
  19. stack.push(c)
  20. } else {
  21. const popItem = stack[stack.length - 1]
  22. if (map.get(popItem) === c) {
  23. stack.pop()
  24. } else {
  25. return false
  26. }
  27. }
  28. }
  29. return stack.length === 0
  30. }