kmp字符串匹配
来源:互联网 发布:围棋软件知乎 编辑:程序博客网 时间:2024/06/05 17:20
next数组求解
public int[] makeNext(char[] arr) { int[] next = new int[arr.length]; next[0] = -1; int k = -1, j = 0; while (j < arr.length - 1){ // k 前缀 j后缀 if (k == -1 || arr[j] == arr[k]) { if (arr[j+1] == arr[k+1]){ next[++j] = next[++k]; } else{ next[++j] = ++k; } } else { k = next[k]; } } return next; }
求
next数组
的过程可以认为是将模式串拆分成n个子串,分别对每个子串求前缀和后缀的最长公共匹配字符数l
public int match(String haystack, String needle) {char[] arr = needle.toCharArray();int[] next = makeNext(arr);for (int i = 0, j = 0; i < haystack.length();){if (j == -1 || haystack.charAt(i) == arr[j]){i++;j++;if (j == arr.length) return i - arr.length;} else { j = next[j];}}return -1;}
阅读全文
0 0
- KMP 字符串匹配算法
- kmp字符串匹配算法
- kmp字符串匹配算法
- KMP字符串匹配算法
- 字符串匹配算法-kmp
- KMP(字符串匹配)算法
- 字符串匹配 KMP
- KMP 字符串匹配算法
- 字符串匹配算法:KMP
- KMP算法 字符串匹配
- 字符串匹配 KMP 算法
- KMP字符串匹配(1)
- KMP字符串匹配(2)
- KMP字符串匹配(3)
- KMP字符串匹配算法
- KMP字符串匹配
- KMP字符串匹配算法
- KMP字符串匹配
- iOS RSA密钥的生成与转换
- C++的引用
- 进制转换
- jq判断scroll是否到底部
- unity profiler深入学习6:rendering profiler
- kmp字符串匹配
- 类的初始化顺序
- JavaWeb学习篇之EL表达式
- URAL
- 字符串中数字子串的求和
- easystruts-1.0.2增加拦截器抽象类,Session处理
- MySQL中utf8和utf8mb4的区别
- python 报错Microsoft Visual C++ 14.0 is required
- 今天开始重新学习算法