`
happmaoo
  • 浏览: 4338068 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

KMP字符串匹配算法及Java实现

阅读更多

KMP算法的Java实现:

1. KMP算法的思路:
1) 首先对模式串构建next数组,表示当某一位不匹配的时候需要回溯的下一个位置;
2) 然后在对主串使用该模式串进行匹配,当遇到不相等的地方,查询next数组,选择模式串中下一个要匹配的位置的字符;
如果该字符和当前不匹配的字符一样的话,则进一步获取新位置在next数组的值,直到要匹配位置的字符是新的字符;
(不要此步骤也可以,此步骤更加优化)
3) 直到到达模式串结尾。

KMP算法的复杂度:

首先生成匹配字符串的next数组的时间复杂度为,每个元素的前面部分元素都需要检查前后是否相等,因此为
1/2*(1+m)*m/2=m(1+m)/4,因此为o(m2);
匹配阶段,每个主字符串位置移动,因此为o(n);
整个为o(m2+n);


KMP算法的Java实现:


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics