231 字
1 分钟
算法之有效括号

20. 有效的括号#

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

有效字符串需满足:

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

image-20210620153513595

解法:

1.利用栈

思路:

根据题意,我们可以推断出以下要点:

  • 有效括号字符串
  • 长度,一定是偶数!
  • 右括号前面,必须是相对应的左括号,才能抵消!
  • 右括号前面,不是对应的左括号,那么该字符串,一定不是有效的括号!

image-20210620153831576

image-20210620153851332

image-20210620153901841

image-20210620153913790

image-20210620153926387

image-20210620153936050

/**
* @param {string} s
* @return {boolean}
*/
let isValid = function (s) {
if (s.length % 2) {
return false;
}
let stack = [];
for (let item of s) {
switch (item) {
case "{":
stack.push(item);
break;
case "[":
stack.push(item);
break;
case "(":
stack.push(item);
break;
case "}":
if (stack.pop() !== "{") return false;
break;
case "]":
if (stack.pop() !== "[") return false;
break;
case ")":
if (stack.pop() !== "(") return false;
break;
}
}
return !stack.length;
};
算法之有效括号
https://nollieleo.github.io/posts/算法之有效括号/
作者
翁先森
发布于
2021-06-20
许可协议
CC BY-NC-SA 4.0