参考代码:

import java.util.Scanner;


 class Main {


public static void main(String[] args) {


Scanner sc = new Scanner(System.in);

String ss[]=new String [3];

for(int k=0;k<3;k++){//读入三行

ss[k]=sc.nextLine();

}

for(int k=0;k<3;k++){

    String op[]=ss[k].split(" ");

    int ne[]=new int [10010];

    String b=" "+op[1];//把每段字符串前加一个空格,以为后续操作都是从1开始的,0号下标不用

    String a=" "+op[0];

    for(int i=2,j=0;i<b.length();i++){//求ne[]数组

        while(j>0&&b.charAt(i)!=b.charAt(j+1)) j=ne[j];

         if(b.charAt(i)==b.charAt(j+1))j++;

         ne[i]=j;

    }

    int f=1;

    for(int i=1,j=0;i<a.length();i++){

        while(j>0&&b.charAt(j+1)!=a.charAt(i)) j=ne[j];

        if(a.charAt(i)==b.charAt(j+1))j++;

        if(j==b.length()-1){

            System.out.println(i-b.length()+2);

            j=ne[j];

            f=0;

        }

    }

    if(f!=0)System.out.println(0);

}

}

}



点赞(0)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论