java #11,#13超时,而其他测试点只用100ms左右?
查看原帖
java #11,#13超时,而其他测试点只用100ms左右?
1316333
190859136kkkk楼主2024/4/14 23:08

为什么这两个测试点和其他的运行时间差这么多,哪里有问题呢?求助。

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.StreamTokenizer;

public class Main {
	static StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
    static  String nextS() throws Exception{
        in.nextToken();
        return in.sval;

    }

    static PrintWriter out = new PrintWriter(System.out);
	public static void main(String[] args)throws Exception {
		String s1=nextS(),s2=nextS();
		char[] a=s1.toCharArray();
		char[] b=s2.toCharArray();
		int n=a.length,m=b.length;
		int[] next =new int[m];
		next[0]=-1;
		for(int i=1,j=-1;i<m;i++) {
			while(j!=-1&&b[i]!=b[j+1]) j=next[j];
			if(b[i]==b[j+1]) j++;
			next[i]=j;
		}
		for(int i=0,j=-1;i<n;i++) {
			while(j!=-1&&a[i]!=b[j+1]) j=next[j];
			if(a[i]==b[j+1]) j++;
			if(j==m-1) {
			out.println(i-m+1+1);//
			out.flush();
			j=next[j];
			}
		}
		for(int i=0;i<m;i++) {
			out.print(next[i]+1+" ");
			out.flush();
		}
	}
	
}
2024/4/14 23:08
加载中...