如何解决搜索Java中排序列表中的字符串,并可能搜索所有以字符串一部分开头的字符串
|| 用Java在字符串排序列表中搜索字符串的最有效方法是什么? 那么搜索以字符串的一部分开头的所有字符串呢? 谢谢你的帮助。解决方法
我认为您同时在寻找Collections#binarySearch来满足这两个要求。
, 要搜索非开头的字符串(即\'and \'匹配\'andrew \',\'candy \'和\'sand \'),则必须进行蛮力操作。
对于字符串的开头,请使用BST。
, 您可以只使用Collections.binarySearch()。
, 列表确实不是正确的数据结构。首先,在最好的情况下,binarySearch会对链表进行O(N)-由于列表不支持随机访问,因此对列表进行排序不会获得任何好处。
您正在寻找的是特里。 Wiki页面描述了优点及其对我的好处,而不会浪费我的时间争取胜利。尽管它没有描述排序后的LinkedList的优点,但请记住,插入排序后的LinkedList的过程是O(N)链接遍历和O(log n)元素比较,就像找到对象一样。该Trie效率更高,仍然支持您从排序链表中获得的所有操作。
Google为支持这种结构的库找到了几个结果,但是我没有使用它们中的任何一个。特里树仍然是一个非常简单的数据结构(与AVL树相比),因此您可以很容易地实现它。
, http://en.wikipedia.org/wiki/Binary_search假设您使用的是“ 0”或类似的非链接结构。
,
uther.lightbringer死记硬背:
用Java在字符串排序列表中搜索字符串的最有效方法是什么?
如前所述,您可以使用Collections.binarySearch(...)。确保您的列表已排序:否则,很可能不会得到正确的结果。
uther.lightbringer死记硬背:
那么搜索以字符串的一部分开头的所有字符串呢?
从头到尾循环遍历列表并检查每个单词,或者创建(或从网上抓取)基数树,该树可以比以单词(列表)形式遍历更快地找到以某个(子)字符串开头的单词。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。