我有一组大量的网址,希望能实现自动完成功能。但我不喜欢简单粗暴的方法,因为它需要遍历整个网址集合,时间复杂度为线性:
for(String url: urls) if(url.startsWith(input) {doSomething();}
现在我知道在哈希集中,函数“contains()”的时间复杂度为“O(1)”,但是没有“containsPrefix()”。是否有简单的方法可以不使用像Lucene这样的大型库或自己编写代码来解决这个问题?我不介意这样做,但对于这样一个简单的问题来说,似乎有点过头了,所以我想知道是否存在现有的简单解决方案 :-)
从我的计算机科学课程中,我记得有一棵由字符串片段组成的树,但我忘记它叫什么了。它的工作原理是这样的:
[car, care, carrot,carrotville]->
car
|
-/
-e
-rrot
|
----ville
附言:我该如何调用返回一个字符串是另一个字符串前缀的所有字符串的方法?例如如果a是b的前缀,那么b对于a是什么?