【发布时间】:2015-03-19 10:12:48
【问题描述】:
我有以下代码来计算 Haskell 列表中某个元素的出现次数:
data Elem = Vanilla | Choco deriving (Eq,Show)
maxStarSeq :: [Elem] -> Int
maxStarSeq [] = 0
maxStarSeq (Vanilla:xs) = 0 + maxStarSeq xs
maxStarSeq (Choco:xs) = 1 + maxStarSeq xs
现在,如何返回该元素的最大序列,而不是绝对计数器?我的意思是,假设我的清单是:
[Vanilla,Choco,Choco,Vanilla,Choco]
使用我的代码,我会得到 3,因为列表中有 3 个 Choco 字符。我想要的是得到 2,因为那是 Choco 字符的最大序列,而下一个序列更短。
我需要一些方法来比较序列,评估哪个更长,或者类似的东西。
【问题讨论】: