String.indexof()函数调用的成本/复杂性是什么

时间:2010-08-25 04:46:24

标签: java string

String.indexof()函数调用的成本/复杂性是什么

3 个答案:

答案 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)。