RT,是next函数值求法的[color=red]原理[/color]!不是求法!谢谢!
[code="java"]public int[] getNext(char[] pattern) {
int pattern_len=pattern.length;
int[] next=new int[pattern_len];
next[0]=-1;next[1]=0;
for (int i = 2; i < pattern_len; i++) {
int j=i;
while(j>1) {
if (pattern[i-1]==pattern[next[j-1]]) {
next[i]=next[j-1]+1;
break;
}else {
j=next[j-1];
}
}
if (j==1) {
next[i]=1;
}
}
return next;
}[/code]
http://www.cppblog.com/oosky/archive/2006/07/06/9486.html
你这程序有问题,我测试了下,返回的是-1,0,0,0,0....
这程序的目的是什么?
public class NextTest {
public static int[] getNext(char[] pattern) {
int pattern_len=pattern.length;
int[] next=new int[pattern_len];
next[0]=-1;next[1]=0;
for (int i = 2; i < pattern_len; i++) {
int j=i;
while(j>1) {
if (pattern[i-1]==pattern[next[j-1]]) {
next[i]=next[j-1]+1;
break;
}else {
j=next[j-1];
}
}
if (j==1) {
next[i]=1;
}
}
return next;
}
public static void main(String[] args){
char[] a={'a','e','f','g','w'};
int[] b= getNext(a);
for(int i=0;i<b.length;i++){
System.out.println(b[i]);
}
}
}