假设您有一个List(1,1,1,4,4,1)并且必须计算连续重复的列表头部元素的次数.在上面的示例中,方法应该返回3.在此方法中,我们只关心第一个元素.
我走到这一步并陷入困境.鉴于第一个不可重复的角色,我想打破,怎么样?
def firstRepeated [X] (xs: List[X]) : Int = xs match {
case Nil => 0
case y::ys => ys match {
case Nil => 0
case z::zs => if (y == z) 1 + firstRepeated(zs) else // break
}
}
Run Code Online (Sandbox Code Playgroud)
另外,在上面的代码中,我认为我没有正确处理列表的情况 z::Nil
任何指针将不胜感激
还存在用于此的方法中的GenSeqLike(其List从继承): prefixLength.这是一个非常简短的答案:
s.prefixLength(_==s.head)
Run Code Online (Sandbox Code Playgroud)