
请使用栈概念,判断字符串内的括号,包括"("、"["、"{")是否闭合,举例如下:
let str = '((({{{123}}}))))' //false
let str = '({[]})' //true
let str = '((()' //false
我的解法如下:
function validate(str: string) {
const targetArray: string[] = str.split("");
let leftStack: string[] = [];
let status: boolean = true;
for (let i = 0; i < targetArray.length; i++) {
if (
targetArray[i] === "{" ||
targetArray[i] === "(" ||
targetArray[i] === "["
) {
leftStack.push(targetArray[i]);
} else {
if (!["}", "]", ")"].includes(targetArray[i])) continue;
const lastStr = leftStack.pop();
if (targetArray[i] === ")") {
if (lastStr !== "(") {
status = false;
break;
}
} else if (targetArray[i] === "]") {
if (lastStr !== "[") {
status = false;
break;
}
} else if (targetArray[i] === "}") {
if (lastStr !== "{") {
status = false;
break;
}
}
}
}
if (leftStack.length > 0) {
status = false;
}
return status;
}
THE END!
网友评论