我已经创建了一个打印字符串的每个可能子序列的函数。现在我需要制作一个打印最常见的功能。关于我可以从哪里开始的任何想法。不要求完全编码的功能只是一个开始的地方。此外,仅使用前奏函数(包括基数)。
例如,如果我输入"jonjo"
,我的函数将返回["jonjo","jonj","jon","jo","j","onjo","onj"...]
等。最常见的子字符串将是"jo"
。
如果出现两个或多个最常出现的子串,则只打印最长的子串。如果仍然相等,任何一个子串就足够了。
答案 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。