温馨提示:本文翻译自stackoverflow.com,查看原文请点击:javascript - How to implement count missing brackets?
javascript

javascript - 如何实现计数缺失括号?

发布于 2020-03-27 11:44:10

例如:我有一个仅包含方括号'('和')'的字符串。如何计算缺失的括号?

我的代码:

var str = '(())';
var open = 0, close = 0, count = 0;
for (var i = 0; i < str.length; i++) {
  if (str[i] == '(') {
    open++;
    count = Math.abs(open - close);
  } else {
    close++;
    count = Math.abs(open - close);
  }
}
console.log(count);

输入:'(())'输出:0

输入:'(()'输出:1

输入:'))(('输出:4

输入:'(()('输出:2

输入:'(()()))(())(())'输出:1

查看更多

查看更多

提问者
miyarin
被浏览
13
Michael Beeson 2019-07-03 23:16

将来最好提供您到目前为止所尝试的

但是我喜欢这个问题,下面的代码片段显示了它的工作原理:

问题是,当出现方括号且没有随附的方括号时,您需要增加“丢失”的计数。

function countMissing(input) {
  let danglingEnds = 0;
  let opened = 0;
  for (const character of input) {
    if (character === '(') opened++;
    else if (character === ')') {
      if (opened === 0) danglingEnds++;
      else opened--;
    }
  }
  return opened + danglingEnds;
}

console.log(countMissing('(())'));
console.log(countMissing('(()'));
console.log(countMissing('))(('));
console.log(countMissing('(()('));
console.log(countMissing('(()()))(())(())'));