http://blog.csdn.net/yutianzuijin/article/details/11954939/
int[] KMP(String s) {
int n = s.length();
int[] next = new int[n];//表示以n结尾的字符串的前缀后缀最长匹配长度,是长度,不是index,其纸箱的index应该是next[n]-1
//next[0]=;
int j=0;
for(int i=1; i<n; i++) {
j = next[i-1];
while(j>0 && s.charAt(i)!=s.charAt(j)) {
j=next[j-1];
}
next[i] = s.charAt(i)==s.charAt(j)?j+1:j;
}
return next;
}