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

给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。

解答

  1. /**
  2. * @param {string} s
  3. * @return {boolean}
  4. */
  5. var isValid = function(s) {
  6. let stack = [],
  7. i = 0,
  8. len = s.length;
  9. while (i < len) {
  10. const char = s[i];
  11. switch (char) {
  12. case ')': {
  13. const preChar = stack.pop();
  14. if (preChar !== '(') {
  15. return false;
  16. }
  17. break;
  18. }
  19. case ']': {
  20. const preChar = stack.pop();
  21. if (preChar !== '[') {
  22. return false;
  23. }
  24. break;
  25. }
  26. case '}': {
  27. const preChar = stack.pop();
  28. if (preChar !== '{') {
  29. return false;
  30. }
  31. break;
  32. }
  33. default:
  34. stack.push(char);
  35. }
  36. ++i;
  37. }
  38. return stack.length === 0;
  39. };