【113】

1668. 最大重复子字符串
 

给你一个字符串 sequence ,如果字符串 word 连续重复 k 次形成的字符串是 sequence 的一个子字符串,那么单词 word 的 重复值为 k 。单词 word 的 最大重复值 是单词 word 在 sequence 中最大的重复值。如果 word 不是 sequence 的子串,那么重复值 k 为 0 。

给你一个字符串 sequence 和 word ,请你返回 最大重复值 k 。

 

示例 1:

输入:sequence = "ababc", word = "ab"
输出:2
解释:"abab" 是 "ababc" 的子字符串。

示例 2:

输入:sequence = "ababc", word = "ba"
输出:1
解释:"ba" 是 "ababc" 的子字符串,但 "baba" 不是 "ababc" 的子字符串。

示例 3:

输入:sequence = "ababc", word = "ac"
输出:0
解释:"ac" 不是 "ababc" 的子字符串。

--------------------------------------------------------------------------------------------------------
自己写的但是跑不出来,之后放idea试试找问题:
复制代码
 1 class Solution {
 2     public int maxRepeating(String sequence, String word) {
 3         if(sequence.length() < word.length()){
 4             return 0;
 5         }
 6         int width = word.length();
 7         int left1 = 0, right1 = left1 + width;
 8         int right2 = sequence.length(), left2 = right2 - width;
 9         int k1 = 0, k2 = 0;
10         int tmp1 = 0, tmp2= 0;
11         while(right1 <= sequence.length()){
12             String target = sequence.substring(left1, right1);
13             if(word.equals(target)){
14                 left1+=width;
15                 right1 = left1 + width;
16                 k1++;
17                 tmp1 = k1;
18             }else{
19                 left1++;
20                 right1 = left1 + width;
21                 k1 = 0;   
22             }
23         }
24         k1 = Math.max(tmp1, k1);
25         while(left2 >= 0){
26             String target = sequence.substring(left2, right2);
27             if(word.equals(target)){
28                 right2-=width;
29                 left2 = right2 - width;
30                 k2++;
31                 tmp2 = k2;
32             }else{
33                 right2--;
34                 left2 = right2 - width;
35                 k2 = 0;   
36             }
37         }
38         k2 = Math.max(tmp2, k2);
39         return Math.max(k1, k2);
40     }
41 }
复制代码
--------------------------------------------------------------------------------------------------------

复制代码
 1 class Solution {
 2     public int maxRepeating(String sequence, String word) {
 3         int k = 0;
 4         String s = word;
 5         while(sequence.contains(s)){
 6             s+=word;
 7             k++;
 8         }
 9         return k;
10 
11     }
12 }
复制代码

 

posted @   Wianxhlyl  阅读(62)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示