题解 | #有效括号序列#
有效括号序列
https://www.nowcoder.com/practice/37548e94a270412c8b9fb85643c8ccc2
/**
*
* @param s string字符串
* @return bool布尔型
思路:
把字符串转为数组sArr,创建一个辅助栈stack。遍历sArr。
1、如果栈为空,将sArr[i] push进栈;
2、栈不为空,如果以下三种情况符合任意一种,就将栈顶元素移除:
栈顶为'(',且此刻遍历到的元素为')'
栈顶为'[',且此刻遍历到的元素为']'
栈顶为'{',且此刻遍历到的元素为'}'
如果都不符合这三种情况,就将arr[i] push 入栈;
3、 最后如果栈为空,则true;否则false
*/
function isValid(s) {
// write code here
const sArr = s.split(""); // ["(", ")", "[", "]"]
const stack = [];
for (let i = 0; i < sArr.length; i++) {
if (stack.length === 0) {
stack.push(sArr[i]); // ["("]
} else {
if (
(stack[stack.length - 1] === "(" && sArr[i] === ")") ||
(stack[stack.length - 1] === "{" && sArr[i] === "}") ||
(stack[stack.length - 1] === "[" && sArr[i] === "]")
) {
stack.pop();
} else {
stack.push(sArr[i]);
}
}
}
return !stack.length;
}
module.exports = {
isValid: isValid,
};