3,423
社区成员
发帖
与我相关
我的任务
分享
public class Test{
public static void main(String[] args) {
String T = "abcabx";
int[] next_1 = new int[T.length()+1];
int[] next = get_next(T,next_1);
for(int e : next){
System.out.println(e);
}
}
//求解next数组
public static int[] get_next(String T,int[] next){
int i,j;
i = 1;
j = 0;
next[1] = 0;
while(i < T.length()){
if(j == 0 || T.charAt(i) == T.charAt(j)){ //比较后缀与前缀的字符
++i;
++j;
next[i] = j;
}else{
j = next[j]; //若字符不相等,则j值回溯
}
}
return next;
}
}