题目:
题解:
func getMaxRepetitions(s1 string, n1 int, s2 string, n2 int) int {n := len(s2)cnt := make([]int, n)for i := 0; i < n; i++ {// 如果重新给一个s1 并且s2是从第i位开始匹配 那么s2可以走多少位(走完了就从头开始走p1, p2 := 0, ifor p1 < len(s1) {if s1[p1] == s2[p2 % n] {p2++}p1++}// 统计如果是从s2的第i位开始走 给一个新的s1 s2能走多少位cnt[i] = p2 - i}index := 0// 直接模拟不断给s1 然后看s2能新走多少位for i := 0; i <n1; i++ {index += cnt[index % n]}return index / n / n2}