在Java中,String()的Big-O是什么?

2022-03-14 00:00:00 string contains big-o java

我正在处理一个项目,需要优化运行时间。String.contains()运行时是否与TreeSet.contains()相同,即O(LogN)?

我问这个问题的原因是我正在构建一个TreeMap<String, TreeSet<Song>>,其中的歌曲包含一串歌词。根据效率的不同,我正在考虑在歌曲中包含一组歌词,并对其运行搜索,而不是对字符串进行搜索。


解决方案

最著名的算法之一是Boyer-Moore字符串搜索算法,虽然它在最好的情况下可以提供次线性性能。

在Java中使用哪种算法取决于您下载的实现。例如,OpenJDK似乎使用了一种运行在O(Nm)内的朴素算法,在最好的情况下,它的性能是线性的。参见行1770-1806here。

相关文章