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
}
}