KMP算法中的next数组

import java.util.Scanner;
public class KMP {
	public int [] FindNext(String s)
	{
		int []next=new int[s.length()];
		int m=s.length();
		int j=1;
		int sum=0;
		while(jresult)&&find)result=sum;
		  }
		  next[j]=result;
		  j++;
		}
		for(int i=s.length()-1;i>0;i--)next[i]=next[i-1];
		next[0]=-1;
		return next;
	}
	public static void main(String [] args)
	{
	    Scanner input=new Scanner(System.in);
		String s=input.next();
		System.out.println();
		KMP kmp=new KMP();
		int [] next=kmp.FindNext(s);
		for(int i=0;i


就是非常普通地从j-1个,1开始比较前缀和后缀

出来了数组之后再整体右移一位然后将第一位变为-1

KMP算法中的next数组_第1张图片KMP算法中的next数组_第2张图片

   

你可能感兴趣的:(数据结构与算法分析(java))