KMP算法 next数组模板
2021/9/11 17:05:01
本文主要是介绍KMP算法 next数组模板,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
void preKMP(String s, int kmpNext[]) { int len = s.length(); int k, j; k = kmpNext[0] = -1; j = 0; while (j < len - 1) { if (k == -1 || s.charAt(j) == s.charAt(k)) { if (s.charAt(++j) == s.charAt(++k)) { kmpNext[j] = kmpNext[k]; } else { kmpNext[j] = k; } } else { k = kmpNext[k]; } } }
表示匹配的时候,j 下次前移的位置
public int strStr(String haystack, String needle) { if (needle.length() == 0) return 0; int[] next = new int[needle.length()]; preKMP(needle, next); int i = 0, j = 0; while (i < haystack.length() && j < needle.length()) { if (j == -1 || haystack.charAt(i) == needle.charAt(j)) { i++; j++; } else { j = next[j]; } } if (j == needle.length()) { return i - j; } else { return -1; } }
这篇关于KMP算法 next数组模板的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南