JavaScript判断是否是有效字符串
方法一:使用栈的存放数据思路,后进先出
let str = "[{{{[][][{()}]}}}{}]]";
const obj = { "(": ")", "[": "]", "{": "}" }; //定义一个前括号对应的后括号数据,便于后续取用
const arr = []; //收集出现的前括号对应的括号
let value = true;
for (let i = 0; i < str.length; i++) {// 遍历
if (str[i] === "{" || str[i] === "[" || str[i] === "(") {
arr.push(obj[str[i]]);
} else {
let res = arr.pop(); //获取最后数据
if (res !== str[i]) {
value = false;
break;
}
}
}
if (value && arr.length === 0) { //判断最后是否取空,如果最后一个不剩说明有效
value = true;
}
console.log("输出结果", value);
方法二:直接将成对括号进行替换操作,最后结果为空则为有效
let str = "[{{{[][][{()}]}}}{}]]";
for (let i = 0; i < 100; i++) {
const res =
str.includes("{}") || str.includes("[]") || str.includes("()");
if (res) {
str = str.replace("[]", "");
str = str.replace("{}", "");
str = str.replace("()", "");
}
}
console.log("输出结果", str);