算法描述
给定两个长度的字符串r1和r2,求一个较长字符串是否包含另一个较短字符串且位置在哪里
大致思路
1.prefix数组记录最长公共前后缀
2.根据prefix数组进行子串与主串的模式匹配
3.返回数组下标位置
关键点: prefix[k]的值代表的是下标为k的字符前面的字符串最长公共前后缀的长度,也表示该处字符不匹配时应该回溯到的字符的下标
代码实现
//时间复杂度O(m+n)
import java.util.Scanner;
public class KMP{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
char[] text = sc.next().toCharArray();
char[] pattern = sc.