uq_69632083412


私信TA

用户名:uq_69632083412

访问量:49

签 名:

等  级
排  名 30383
经  验 457
参赛次数 0
文章发表 1
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

TA的其他文章

kmp字符匹配
浏览:30


参考代码:

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分

1 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区