这是一个适用于(可能)任何高级编程语言的通用问题。 情况如下:
假设我有一个字符串数组。说,我设法将一个短篇故事中的50万个字符串放入一个数组中(假设您没有输入格式选项)。因此,很可能会有任意数量的重复项目。
我想获取这个字符串数组并创建另一个包含该数组唯一子集(?)的数组(即:没有重复项)。在这种情况下,输入和输出都必须是数组,因此可能会限制您使用各种选项。
性能方面,实现这一目标的最快方法是什么?我目前正在使用线性搜索来检查单词是否已经存在,但由于它是线性搜索,我觉得可能有更快的方法,特别是如果我有不合理的字符串可以使用。就像一部更大的小说!
答案 0 :(得分:3)
使用散列集可能是最明智的做法 - 复杂性应该是O(N)。
注意:大多数高级编程语言都包含一个函数实现,可以从数组中删除重复项,例如: PHP
答案 1 :(得分:1)
如果你要在其中加入大量的文字,directed acyclic word graph是我所知道的最有效的数据结构。
然而,它在概念上是一个非常简单的数据结构。