在TreeSet中查找包含前缀的条目

时间:2014-07-09 22:30:15

标签: java string treeset

我在Java中有一个包含字符串(特别是单词)的TreeSet。我需要写一个方法......

public boolean isValidPrefix(String prefix)

...接受前缀作为参数并检查TreeSet以查看其包含的任何单词是否以前缀开头。

例如,假设前缀“CA”和包含 {“DOG,”CAT“,”COW“} 的TreeSet,我的方法需要识别出有一个单词“CAT”,以前缀开头。

P.S。我会遍历TreeSet,但时间复杂度是一个明显的约束,因为TreeList在许多情况下最多可达200​​,000个单词。

1 个答案:

答案 0 :(得分:5)

如果一个字符串fooTreeSet中另一个字符串bar的前缀,我相信bar可以立即关注foo在TreeSet中。

因此,我认为只需TreeSet.ceiling(foo)并检查foo是否为其前缀。

从该函数的文档中,我们看到它确切地返回了按顺序跟随给定元素的元素。

  

返回此集合中的最小元素大于或等于   给定元素,如果没有这样的元素,则返回null。

算法将是:

  1. 在输入上调用TreeSet.ceiling()。如果返回值为null,则返回false
  2. 如果返回值不是null,则返回输入是否为返回值的有效前缀。