我希望能够实现一个简单的类(使用Java语言),允许我注册和注销字符串,并基于当前字符串集合自动完成给定的字符串。因此,接口应该是:
- void add(String)
- void remove(String)
- String complete(String)
在算法和数据结构方面,最好的方法是什么?
我希望能够实现一个简单的类(使用Java语言),允许我注册和注销字符串,并基于当前字符串集合自动完成给定的字符串。因此,接口应该是:
在算法和数据结构方面,最好的方法是什么?
您应该考虑使用PATRICIA trie作为数据结构。在谷歌上搜索“patricia trie”,您将找到很多信息...
你需要使用一种可以按照排序顺序维护的列表。你还需要编写自己的搜索算法,以便找到与搜索模式匹配的列表中第一个元素的索引。然后从该索引开始迭代,直到第一个不匹配的元素,这样你就得到了可能完成的列表。
我建议看一下 commons-collections 中的 TreeList。它具有快速插入和删除中间列表项的功能,这是你想要维护排序顺序所必需的。很可能可以很容易地从支持该列表的树上编写搜索函数。
正则表达式。