def balance(chars: List[Char]): Boolean = {
if (chars.isEmpty == true) true
else transCount(chars, 0)
def transCount(chars: List[Char], pro: Int): Boolean = {
var dif = pro
chars match {
case "(" :: Nil => false
case ")" :: Nil => dif -= 1; if (dif == 0) true else false
case _ :: Nil => if (dif == 0) true else false
case "(" :: tail => dif += 1
transCount(tail, dif)
case ")" :: tail => dif -= 1;
if (dif < 0) false
else transCount(tail, dif)
case _ :: tail => transCount(tail, dif)
}
}
}
我有类型不匹配问题
Error:(30, 13) type mismatch;
found : String("(")
required: Char
case "(" :: Nil => false
^
但实际上不知道如何解决(请不要使用char.toList
)
答案 0 :(得分:5)
chars
被声明为List[Char]
。
但是,您的第一个模式是"(" :: Nil
,这是一个List[String]
,因为"("
是一个字符串 - 因此类型不匹配。
您需要一个字符文字'('
,而不是字符串文字"("
当然,这同样适用于其他模式。