我得到了一个使用scala平衡括号的作业。我写了这段代码:
def balance(chars: List[Char]): Boolean = {
def check(sent: List[Char], count: Int): Int =
if (sent.isEmpty)
count
else if (sent.head == '(')
check(sent.tail, count + 1)
else if (sent.head == ')')
check(sent.tail, count - 1)
else
check(sent.tail, count)
check(chars, 0) == 0 }
但此代码在"())("
中失败
任何想法实现这个代码是正确的吗?
答案 0 :(得分:5)
不提供任何代码,只是澄清可能的规范。您的所有代码都在计算右侧和左侧的数量,并确保它们是相等的。这是一个必要条件,但还不够。对于平衡括号,您还需要显示当您浏览字符串时,'(您看到的'的数量必须始终大于或等于'的数量)。