如何检查JavaScript中的所有括号?
verify("---(++++)----") -> 1
verify("") -> 1
verify("before ( middle []) after ") -> 1
verify(") (") -> 0
verify("} {") -> 1 //no, this is not a mistake.
verify("<( >)") -> 0
verify("( [ <> () ] <> )") -> 1
verify(" ( [)") -> 0
我有verify(str)
这将返回1或0.i只想检查字符串上的<>,{},[],()
括号,然后任何人都可以为我做这个。谢谢
答案 0 :(得分:1)
首先,删除所有不是()
,[]
或<>
的字符。然后,您可以使用递归函数来删除未嵌套的平衡对。如果在删除所有平衡对后字符串为空,则该字符串有效。如果有效则返回1
,如果无效则返回0
。
function verify(input) {
return stripBalancedPairs(stripNonPairs(input)) ? 0 : 1;
}
function stripNonPairs(input) {
return input.replace(/[^()[\]<>]+/g, '');
}
function stripBalancedPairs(input) {
var str = input.replace(/\(\)|\[]|<>/g, ''); // remove (), [], or <>
return str === input ? str : stripBalancedPairs(str);
}
console.log(verify("---(++++)----")); // -> 1
console.log(verify("")); // -> 1
console.log(verify("before ( middle []) after ")); // -> 1
console.log(verify(") (")); // -> 0
console.log(verify("} {")); // -> 1
console.log(verify("<( >)")); // -> 0
console.log(verify("( [ <> () ] <> )")); // -> 1
console.log(verify(" ( [)")); // -> 0
答案 1 :(得分:0)
试试这个
function verify(str) {
len = str.length;
b = [];
j = 0;
f = 0;
for (var i = 0; i < len; i++) {
if (str[i] == "(" || str[i] == "<" || str[i] == "[") {
b[j] = str[i];
j++;
}
if (str[i] == ")" || str[i] == "]" || str[i] == ">") {
k = b.length - 1;
if (str[i] == ")") {
if (b[k] == "(") {
b.pop();
j--;
} else {
f = 1;
}
} else if (str[i] == "]") {
if (b[k] == "[") {
b.pop();
j--;
} else {
f = 1;
}
} else if (str[i] == ">") {
if (b[k] == "<") {
b.pop();
j--;
} else {
f = 1;
}
} else {
f = 1;
}
}
}
if (f == 1) return 0;
else return 1;
}
console.log(verify("---(++++)----"));
console.log(verify(""));
console.log(verify("before ( middle []) after "));
console.log(verify(") ("));
console.log(verify("} {"));
console.log(verify("<( >)"));
console.log(verify("( [ <> () ] <> )"));
console.log(verify(" ( [)"));