【发布时间】:2011-06-27 04:46:15
【问题描述】:
我只是在查看 Java String 类的 .indexOf() 方法的实现,代码作者似乎使用蛮力算法在给定字符串中查找子字符串。也就是说,该方法在 O(mn) 中运行,其中 m 和 n 分别是源字符串和目标字符串的长度。
为什么作者不使用像 Rabin-Karp 这样更高效的算法,如果提供了一个好的哈希函数,它的运行时间复杂度是 O(m + n) ?
我可能错过了执行此实施原因背后的完整知识,因此想了解。
【问题讨论】:
-
你说的是
String.indexOf(String)吗?substring()创建一个新字符串。