java String的split和index

2016-06-19  本文已影响0人  斯卡碧
split(regex, limit)
indexOf(str)

split使用正则分割。

开始以为正则慢于indexOf,其实不对。

后来学习字符串查找的3个实现:朴素算法、正则DFA、KMP,方知jdk如此实现很有道理。正则DFA和KMP的时间复杂度是O(n),而朴素是O(m(n-m+1))。

java实现的split在regex长度是1且不是正则的内置字符,或长度是2但其实是转义字符时会直接使用indexOf,因为此时m=1。

所以查找时尽量用正则或KMP,而不是indexOf。

上一篇下一篇

猜你喜欢

热点阅读