例如:我有一个仅包含方括号'('和')'的字符串。如何计算缺失的括号?
我的代码:
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
将来最好提供您到目前为止所尝试的
但是我喜欢这个问题,下面的代码片段显示了它的工作原理:
问题是,当出现方括号且没有随附的方括号时,您需要增加“丢失”的计数。
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('(()()))(())(())'));