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” 的子字符串。
解题思路
理解错了题目意思,导致写出来的代码是找子字符串的数量,而题目的意思是找出最长的,能够拼接起来的子字符串的数量 (连续重复!!!!)
public int maxRepeating(String sequence, String word) {if (word.length() > sequence.length()) return 0;char[] s &#61; sequence.toCharArray();char[] w &#61; word.toCharArray();int count &#61; 0;int left &#61; 0,right &#61; w.length - 1;while (right <&#61; s.length-1){String str &#61; sequence.substring(left,right &#43; 1);if (str.equals(word)){count&#43;&#43;;System.out.println(str);}left &#43;&#43;;right&#43;&#43;;}return count;
}
正确的代码&#xff1a;
用StringBuilder拼接word
首先判断sequence是否包含word
如果包含则count&#43;&#43;&#xff0c;然后sb再拼接一个word。
直至不包含为止退出循环。
public int maxRepeating(String sequence, String word) {int count &#61; 0;StringBuilder sb &#61; new StringBuilder(word);while(sequence.contains(sb)) {count&#43;&#43;;sb.append(word);System.out.println(sb);}return count;}