最大重复子字符串

4 阅读1分钟
package org.example.leetcodeBook.dp;  
  
import java.util.Arrays;  
// 最大重复子字符串  
// 给你一个字符串 sequence ,如果字符串 word 连续重复 k 次形成的字符串是  
// sequence 的一个子字符串,那么单词 word 的 重复值为 k 。  
// 单词 word 的 最大重复值 是单词 word 在 sequence 中最大的重复值。  
// 如果 word 不是 sequence 的子串,那么重复值 k 为 0 。  
// 给你一个字符串 sequence 和 word ,请你返回 最大重复值 k 。  
// 示例 1:  
// 输入:sequence = "ababc", word = "ab"  
// 输出:2  
// 解释:"abab" 是 "ababc" 的子字符串。  
  
  
public class MaxRepeatingSolution {  
    public int maxRepeating(String sequence,String word){  
        int n=sequence.length(),m=word.length();  
        if(n<m) return 0;  
        int[] f=new int[n];  
        for (int i = m-1; i <n; i++) {  
            boolean valid=true;  
            for (int j = 0; j <m ; j++) {  
                if(sequence.charAt(i-m+j+1)!=word.charAt(j)){  
                    valid=false;  
                    break;  
                }  
            }  
            if(valid){  
                f[i]=(i==m-1?0:f[i-m])+1;  
            }  
        }  
        return Arrays.stream(f).max().getAsInt();  
    }  
}