蒟蒻数据#11和#13TLE 卡了半天了 还能怎么优化0x0
查看原帖
蒟蒻数据#11和#13TLE 卡了半天了 还能怎么优化0x0
469592
Lucifer_wu_heng楼主2021/3/18 09:44
package Interline;

import java.util.Scanner;

public class KMP{

	static int[] next;
public static void main(String[] args)
{
	Scanner sc=new Scanner (System.in);
	String str=sc.nextLine();
	String strr=sc.nextLine();
	next=new int[strr.length()+1];
	KMP(str,strr);
	for(int k=1;k<=strr.length();k++)
	{
		System.out.print(next[k]+" ");
	}
}
public static void KMP(String str,String strr)

{
	int i=0;
	int j=0;
	get_next(strr);
	int sz=str.length();
	int pz=strr.length();
	while(i<sz)
	{
		
		if(j==-1||str.charAt(i)==strr.charAt(j))
		{
			
			i++;
			j++;
			
		}
		else
		
		j=next[j];
	if(j==pz)
	{
		System.out.println(i-j+1);
		j=next[j];
	}
	}
}

private static void get_next(String strr) {
	// TODO Auto-generated method stub
	int k=-1,j=0;
	next[0]=-1;
	while(j<strr.length())
	{
		if(k==-1||strr.charAt(j)==strr.charAt(k))
		{
			
			j++;
			k++;
			next[j]=k;
		}
		else
		{
		
			k=next[k];
		}
	}

}
}

2021/3/18 09:44
加载中...