String.indexof()函数调用的成本/复杂性是多少?
String.indexof()函数调用的成本/复杂性是多少?
IIRC Java的.indexOf()
实现只是天真的字符串匹配算法 ,它是O(n+m)
平均值和O(n*m)
最坏情况。
在实践中,这足够快; 我测试了相对较大的针(> 500个字符)和干草堆(几个MB)字符串,它可以在一秒钟内(在普通家用电脑中)进行匹配。 请注意,我强迫它穿过整个大海捞针。
在java中,如果调用是string1.indexOf(string2),则时间成本为O(m-n),其中m是string1的长度,n是string2的长度。
取决于实施。
例如,当在较长的字符串中搜索字符串时,“Turbo Boyer-Moore算法需要额外的恒定空间量才能在2n比较中完成搜索(而不是Boyer-Moore的3n),其中n是数字要搜索的文字中的字符。“ (见维基百科 )。