在JavaScript中验证或检查编码字符串的括号

时间:2016-08-11 14:06:02

标签: javascript string

如何检查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只想检查字符串上的<>,{},[],()括号,然后任何人都可以为我做这个。谢谢

2 个答案:

答案 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("   (      [)"));