力扣1668(java&python)-最大重复子字符串(简单)

题目:

给你一个字符串 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" 的子字符串。
 

提示:

1 <= sequence.length <= 100
1 <= word.length <= 100
sequence 和 word 都只包含小写英文字母。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/maximum-repeating-substring
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路:

先记录一下本菜鸟的错误解题思路:设立双指针i, j, 分别指向sequence和word的开头,开始遍历两字符串,如果两个指针所指向的字符相同,则让两指针同时向前移动一位,当word的指针超过它的长度时,说明前面的字符已经符合条件,则让count 加1,j 重置为0,如果两个指针所指向的字符相同,则让两指针同时向前移动一位,否则,更新最大最大连续长度并让sequence指针向前移动一位。

第一个错误:用例sequence= "a",word= "a"过不了

第二个错误:用例sequence="aaabaaaabaaabaaaabaaaabaaaabaaaaba",word= "aaaba"过不了

一、暴力

直接StringBuilder拼接word,首先判断sequence中是否包含word,如果包含,则count++,然后sb里面再拼接一个word,继续判断sequence中是否包含word,直至不包含就退出循环。

java代码:

 1 class Solution {
 2     public int maxRepeating(String sequence, String word) {
 3         int count = 0;
 4         StringBuilder sb = new StringBuilder(word);
 5         while(sequence.contains(sb)){
 6             count++;
 7             sb.append(word);
 8         }
 9         return count;
10     }
11 }

 python3代码:

 1 class Solution:
 2     def maxRepeating(self, sequence: str, word: str) -> int:
 3         count = 0
 4         sb = ""
 5         while len(sb) < len(sequence):
 6             sb += word
 7             if sb in sequence:
 8                 count += 1
 9             else:
10                 break
11         return count

posted on 2022-11-03 10:08  我不想一直当菜鸟  阅读(130)  评论(0)    收藏  举报