package LeetCode_1668 /** * 1668. Maximum Repeating Substring * https://leetcode.com/problems/maximum-repeating-substring/ * For a string sequence, a string word is k-repeating if word concatenated k times is a substring of sequence. * The word's maximum k-repeating value is the highest value k where word is k-repeating in sequence. * If word is not a substring of sequence, word's maximum k-repeating value is 0. Given strings sequence and word, return the maximum k-repeating value of word in sequence. Example 1: Input: sequence = "ababc", word = "ab" Output: 2 Explanation: "abab" is a substring in "ababc". * */ class Solution { /* * Time:(n), Space:O(1) * */ fun maxRepeating(sequence: String, word: String): Int { val l = sequence.length var max = 0 var count = 0 var start = 0 while (start + word.length <= l) { val end = start + word.length if (sequence.substring(start, end) == word) { count++ /* * jump into next right position, for example: "ababc" and "ab", * start is 0,then jump into 0+2 * */ start += word.length max = Math.max(max, count) } else { //if not match, reset the count and moving start count = 0 start++ } } return max } }