【问题标题】:How to find if a given input is a meaningful word or not如何查找给定的输入是否是有意义的单词
【发布时间】:2016-11-30 04:00:22
【问题描述】:

我正在尝试解决一个问题,我给出了一个文本文件,其中包含单词后跟换行符

我需要编写一个函数,它将输入作为字符串,如果它是一个有意义的单词,则应该返回输出 true,否则返回 false。

我这样做的尝试是遍历文本文件并维护 words 的哈希值。如果我给定的输入是一个存在于哈希中的单词,我将返回 true,否则返回 false。但是哈希的空间复杂度为 O(n),我们还能如何实现这一点。

请帮我解决。

【问题讨论】:

  • “请帮助我解决问题,不要因为不提供我尝试过的代码而苛刻。”不。表现出一些努力。
  • 如果你想从一个文本文件中学习词汇,那很好,你不能做得比 O(|V|) 空间复杂度更好,其中 |V|是你的词汇量。
  • 先显示代码否则得不到帮助
  • "但是哈希的空间复杂度为 O(n)" 是的。或者每次需要时都读取文件(时间复杂度为 O(n))。空间或时间,选择一个。 (Trie 介于两者之间,如果你有一个好的库,那么可以选择,但本机不支持)
  • 您还可以查看有向无环词图 (dawgs),它比尝试的内存效率更高,但更难创建和维护:en.wikipedia.org/wiki/…。另一方面,将yawl wordlist 中的 260,000 个单词存储到标准 Python 集中只需要不到一秒的时间,而且它对我的计算机 RAM 使用率只有很小的影响。在大多数情况下,显而易见的解决方案是完全足够的,只需要大约 2 或 3 行代码。

标签: algorithm data-structures hashtable trie


【解决方案1】:

您可以尝试将您的文本文件分解为各种文本文件。如果您的文本文件包含从 A 到 Z 的单词,请尝试以有意义的方式将其分解,以便您仅对这些单词的一小部分进行排序,而不是对整个字典进行排序。正如其他人指出的那样,我们不是来为您编写代码的,所以请发布您迄今为止尝试过的内容,以便我们提供帮助!

【讨论】:

  • 哦,谢谢,只是想在 30 分钟内澄清这是一个可行的问题
  • 我在电话采访中被问到同样的实施
  • 这取决于。如果您在采访中被问到,他们可能不希望您弄乱实际的字典,这意味着您最好的选择可能是上面解释的特里树!祝你面试顺利!我相信这在 30 分钟内是可行的。
猜你喜欢
  • 1970-01-01
  • 2022-06-17
  • 2017-07-03
  • 2012-07-21
  • 1970-01-01
  • 1970-01-01
  • 2019-07-23
  • 1970-01-01
  • 2015-10-24
相关资源
最近更新 更多