设计师工作室网站,中学生网站制作,手机在线做ppt模板下载网站,wordpress搜索过滤package com.trs.utils;public class KMPStr {/** 在KMP算法中#xff0c;最难求的就是next函数#xff0c;如何理解next函数是一个难题#xff0c;特别是knext[k]#xff0c;这里* 需要指出的是当p[i]!p[j]时#xff0c;我们只有通过回溯将k的值逐渐减小#xff0c;貌似… package com.trs.utils;public class KMPStr {/** 在KMP算法中最难求的就是next函数如何理解next函数是一个难题特别是knext[k]这里* 需要指出的是当p[i]!p[j]时我们只有通过回溯将k的值逐渐减小貌似类似与用到了动态规划的思想 参考网上阮一峰老师的博客讲解的十分详细*/private static int[] getNext(String t) {int[] next new int[t.length()];next[0] -1;int j 0;int k -1;while (j t.length() - 1) {if (k -1 || t.charAt(j) t.charAt(k)) {j;k;next[j] k;} else {k next[k];}}for (int i : next) {System.out.print(i :);}System.out.println();return next;}public static int kmpStrIndex(String s, String t, int[] next) {int i 0;int j 0;while (i s.length() j t.length()) {if (j -1 || s.charAt(i) t.charAt(j)) {i;j;} else {// i不变j后退j next[j];}if (j t.length()) {return i - j;}}return -1;}} View Code 转载于:https://www.cnblogs.com/peizhe123/p/4875107.html