列表中最常出现的字符串(元素)?

时间:2014-12-16 21:15:24

标签: string list haskell

我已经创建了一个打印字符串的每个可能子序列的函数。现在我需要制作一个打印最常见的功能。关于我可以从哪里开始的任何想法。不要求完全编码的功能只是一个开始的地方。此外,仅使用前奏函数(包括基数)。

例如,如果我输入"jonjo",我的函数将返回["jonjo","jonj","jon","jo","j","onjo","onj"...]等。最常见的子字符串将是"jo"

如果出现两个或多个最常出现的子串,则只打印最长的子串。如果仍然相等,任何一个子串就足够了。

2 个答案:

答案 0 :(得分:5)

陈述的问题可以简化为找到最常见的字符,因为很明显,例如,任何"最频繁的子字符串中的第一个字符"将至少与子串本身一样频繁。

答案 1 :(得分:-2)

我建议你看看

sort :: Ord a => [a] -> [a]

来自基础Data.List

group :: Eq a => [a] -> [[a]]

来自基础Data.List

length :: [a] -> Int

来自基础Prelude,基础Data.List

maximum :: Ord a => [a] -> a

来自基础Prelude,基础Data.List

如果您真的可以使用前奏函数,那么我建议您自己实现这些函数,或者设计一个数据结构来提高效率,例如trie。