给定一个字符串,里边可能包含“()”、"{}"、“[]”三种括号,请编写程序检查该字符串的括号是否成对出现。
输出:
true:代表括号成对出现并且嵌套正确,或字符串无括号字符。
false:未正确使用括号字符。
function resolve(str = "(1+2)/(0.5+1)") {
let arr = str.split("").filter(item => item === "(" || item === ")" || item === "[" || item === "]" || item === "{" || item === "}");
console.log(arr.join(""));
let res = [];
let flag = true;
for (let i = 0; i < arr.length; i++) {
if (arr[i] === "(" || arr[i] === "[" || arr[i] === "{") {
res.push(arr[i])
}
if (i === 0 && (arr[i] === ")" || arr[i] === "]" || arr[i] === "}")) {
flag = false;
break;
}
if (arr[i] === ")" && res[res.length - 1] === "(") {
res.length = res.length - 1;
} else if (arr[i] === ")" && res[res.length - 1] !== "(") {
flag = false;
break;
}
if (arr[i] === "]" && res[res.length - 1] === "[") {
res.length = res.length - 1;
} else if (arr[i] === "]" && res[res.length - 1] !== "[") {
flag = false;
break;
}
if (arr[i] === "}" && res[res.length - 1] === "{") {
res.length = res.length - 1;
} else if (arr[i] === "}" && res[res.length - 1] !== "{") {
flag = false;
break;
}
}
if (flag && res.length === 0) {
console.log(true);
} else {
console.log(false);
}
}
resolve();