如何在scala列表中查找可重复元素的数量

Jam*_*sev 2 scala list

假设您有一个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

任何指针将不胜感激

gou*_*ama 7

还存在用于此的方法中的GenSeqLike(其List从继承): prefixLength.这是一个非常简短的答案:

s.prefixLength(_==s.head)
Run Code Online (Sandbox Code Playgroud)