Может ли кто-нибудь объяснить мне алгоритм проблемы балансировки скобок?
"Правильно ли синтаксис строки (кода) из-за сопоставления пар круглых скобок?"
Я не могу понять это, кроме того, что для каждого "(" должен быть другой ")", чтобы алгоритм возвращал 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)
}