Max*_*fen -3 javascript algorithm
我上次接受下一个任务时遇到了问题:
制作将验证括号计数的功能,如果每个打开括号将具有关闭括号(如()或(((())))) - 验证必须是true,以其他方式(如((或)(或()()))) - 必须false.
我的意思是开括号的数量必须等于近括号的数量.
如果有人可以解释我必须如何工作,我会很高兴.谢谢!
function validator(brackets) {
...// some code
}
const goodBrackets = '(((())))';
const badBrackets = '(()())))';
const veryBadBrackets = '(()())()))';
validator(goodBrackets);
validator(badBrackets);
validator(veryBadBrackets);
Run Code Online (Sandbox Code Playgroud)
Kai*_*dul 11
这可以使用堆栈完成,但这不是必需的(额外内存).要检查余额,您将只需要一个计数器,(如果遇到任何计数器将递增,如果遇到任何计数器则递减).在任何时候,如果你遇到一个)并且计数器小于1,这意味着你没有任何(匹配当前右括号.所以它无效.最后,如果counter为0则表示表达式是平衡的.
我不知道javascript,这是某种伪代码:
function validator(string expression) {
count := 0
for(int i = 0; i < expression.length; i++) {
if(expression[i] == '('):
count++
else if(expression[i] == ')'):
if(count == 0):
return false
else:
count--
}
if(count == 0):
return true
return false
}
Run Code Online (Sandbox Code Playgroud)