【问题标题】:most frequently occurring string (element) in a list?列表中最常出现的字符串(元素)?
【发布时间】:2014-12-16 21:15:23
【问题描述】:

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

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

如果有两个或更多出现次数最多的子字符串,则只会打印最长的子字符串。如果仍然相等,则任何一个子字符串都足够了。

【问题讨论】:

  • 嗯,每个字符串最常见的子字符串是空字符串......你应该更具体。
  • 'abcabc' 怎么样?哪一种最常见? “ABC”?还是'ab'?还是'bc'?还是只是“一个”?
  • 刚刚更新以回答这个问题。
  • 您正在对您的问题进行许多修改,但您并没有解决问题的核心问题。

标签: string list haskell


【解决方案1】:

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

【讨论】:

  • 虽然我完全同意你写的这个(问题根本没有很好地说明)......这不应该是对OP问题的评论吗?您基本上是在这里要求澄清。
  • @Jubobs 这取决于.. 如果问题过于复杂,这可能是一个可以接受的答案。
【解决方案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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2010-12-06
    • 1970-01-01
    相关资源
    最近更新 更多