Programming languages 唯一字数

Programming languages 唯一字数,programming-languages,word-count,Programming Languages,Word Count,这是一个适用于(可能)任何高级编程语言的通用问题。 情况如下: 假设我有一个字符串数组。比方说,我设法将一篇短篇小说中的500000个字符串放入一个数组(假设您没有输入格式选项)。因此,很可能存在任意数量的重复项 我想获取这个字符串数组并创建另一个数组,该数组包含该数组的唯一子集(?)(即:无重复项)。在这种情况下,输入和输出都必须是数组,因此可能会限制您使用各种选项 就性能而言,实现这一目标的最快方法是什么?我目前正在使用线性搜索来检查一个单词是否已经存在,但由于它是线性搜索,我觉得可能有更快

这是一个适用于(可能)任何高级编程语言的通用问题。 情况如下:

假设我有一个字符串数组。比方说,我设法将一篇短篇小说中的500000个字符串放入一个数组(假设您没有输入格式选项)。因此,很可能存在任意数量的重复项

我想获取这个字符串数组并创建另一个数组,该数组包含该数组的唯一子集(?)(即:无重复项)。在这种情况下,输入和输出都必须是数组,因此可能会限制您使用各种选项


就性能而言,实现这一目标的最快方法是什么?我目前正在使用线性搜索来检查一个单词是否已经存在,但由于它是线性搜索,我觉得可能有更快的方法,特别是如果我有不合理数量的字符串要处理的话。就像一本更大的小说

使用hashset可能是最明智的做法-复杂性应该是O(N)


注意:大多数高级编程语言都包含从数组中删除重复项的函数的实现,例如,使用哈希集可能是最明智的做法-复杂性应为O(N)


注意:大多数高级编程语言都包含一个函数的实现,该函数可以从数组中删除重复项,例如..

如果要在数组中放入数以百万计的单词,则a是我所知道的最有效的数据结构


然而,从概念上讲,它是一个非常简单的数据结构。

如果你要在其中放入数以百万计的单词,a是我所知道的最有效的数据结构


但从概念上讲,它是一个非常简单的数据结构。

或者一个基于散列的集合,映射意味着你有一个键和一个值,但是你可以用这个值来存储一个计数。是的,对不起,我指的是一个散列集合。编辑。或者是基于散列的集合,映射意味着你有一个键和一个值,但是你可以用这个值来存储一个计数。是的,对不起,我指的是一个散列集合。编辑。最小有向无环单词图生成速度非常慢,所以这不是一个真正的选项。也许你的意思是a,这是“最少简化”的单词图;这是更快地生成,但取决于字典可能内存不足。我仍然会推荐一个哈希集来描述OP正在尝试做的事情。(虽然如果OP要做大量的文字处理,了解DAWG和trie本身可能会很有趣。)@Timwi也许我指的是trie——我一直认为“DAWG”指的是这一系列概念,而不是一个特定的概念。从技术上讲,我认为DAWG是更一般的术语,trie是DAWG的特例。但在实践中,术语DAWG似乎通常指的是最小DAWG…最小有向无环单词图生成速度非常慢,所以这不是一个真正的选项。也许你的意思是a,这是“最少简化”的单词图;这是更快地生成,但取决于字典可能内存不足。我仍然会推荐一个哈希集来描述OP正在尝试做的事情。(虽然如果OP要做大量的文字处理,了解DAWG和trie本身可能会很有趣。)@Timwi也许我指的是trie——我一直认为“DAWG”指的是这一系列概念,而不是一个特定的概念。从技术上讲,我认为DAWG是更一般的术语,trie是DAWG的特例。但在实践中,术语DAWG似乎通常指的是最小的DAWG。。。