题目:
给你一个字符串 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标签:count,word,sequence,python,ababc,重复子,sb,字符串,java From: https://www.cnblogs.com/liu-myu/p/16853467.html