/*** @author Roderland* @since 1.0*/public class KMP {public static void main(String[] args) {String s = "aaaaaaab";String p = "aaab";System.out.println(new KMP().kmp(s, p));}public int kmp(String s, String p) {if (s==null || p==null || s.length()==0 || p.length()==0) return -1;if (p.length()>s.length()) return kmp(p, s);int[] next = getPrefix(p);int x = 0;int y = 0;while (x<s.length() && y<p.length()) {if (s.charAt(x)==p.charAt(y)) {x++;y++;} else {if (y==0) x++;else y=next[y-1];}}return y >= p.length()?x-p.length():-1;}private int[] getPrefix(String p) {int[] res = new int[p.length()-1];res[0]=0;for (int i = 1; i < res.length; i++) {if (p.charAt(i)==p.charAt(res[i-1])) res[i]=res[i-1]+1;else res[i]=0;}return res;}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。