String.indexof()函数调用的成本/复杂性是什么
答案 0 :(得分:10)
IIRC Java对.indexOf()
的实施只是naive string matching algorithm,平均O(n+m)
和O(n*m)
最坏情况。
在实践中,这足够快;我测试了相对较大的针(> 500 char)和haystack(几MB)字符串,它会在一秒钟内(在普通的家用电脑中)进行匹配。请注意,我强迫它穿过整个干草堆。
答案 1 :(得分:0)
在java中,如果调用是string1.indexOf(string2),则时间成本为O(m-n),其中m是string1的长度,n是string2的长度。
答案 2 :(得分:0)
取决于实施。
例如,当在较长的字符串中搜索字符串时,“Turbo Boyer-Moore算法需要额外的恒定空间来完成2n比较内的搜索(而不是Boyer-Moore的3n),其中n是要搜索的文本中的字符数。“ (见Wikipedia)。