有人可以向我解释括号平衡问题的算法吗?
“由于匹配括号对,字符串(代码)语法是否正确?”
除了每个“(”应该有另一个“)”让算法返回 true 之外,我无法弄清楚这一点。
谢谢!
我找到了这个解决方案,但我不明白,我不想复制和粘贴它:
def balance(chars: List[Char]): Boolean = {
def balanced(chars: List[Char], open: Int): Boolean = {
if (chars.isEmpty) open == 0
else
if (chars.head == '(') balanced(chars.tail,open+1)
else
if (chars.head == ')') open>0 && balanced(chars.tail,open-1)
else balanced(chars.tail,open)
}
balanced(chars,0)
}