代码之家  ›  专栏  ›  技术社区  ›  Jason

Java中的Strig.Cub()的Big-O是什么?

  •  20
  • Jason  · 技术社区  · 15 年前

    我正在做一个项目,需要优化运行时间。是 String.contains() 运行时间与 TreeSet.contains() ,哪个是O(logn)?

    我问的原因是我在建一个 TreeMap<String, TreeSet<Song>> ,其中歌曲包含一系列歌词。根据效率的不同,我正在考虑在歌曲中加入一组抒情词,并搜索这些词而不是字符串。

    2 回复  |  直到 9 年前
        1
  •  25
  •   NickL    9 年前

    最著名的算法之一是 Boyer-Moore 字符串搜索算法是O(N),尽管它能在最佳情况下提供子行性能。

    在Java中使用哪种算法取决于下载的实现方式。例如,openjdk似乎使用了一种简单的算法,在最佳情况下,它以O(NM)和线性性能运行。见第1770-1806行 here .

        2
  •  0
  •   dty    15 年前

    您也可以尝试使用TIE而不是TeaMeP(虽然Java没有内置的TIE实现)