Golang | Leetcode Golang题解之第466题统计重复个数

题目:

题解:

Go 复制代码
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, i
		for 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

}
相关推荐
源代码•宸5 小时前
分布式缓存-GO(分布式算法之一致性哈希、缓存对外服务化)
开发语言·经验分享·分布式·后端·算法·缓存·golang
自学小白菜10 小时前
每周刷题 - 第三周 - 双指针专题 - 02
python·算法·leetcode
不能只会打代码11 小时前
力扣--3433. 统计用户被提及情况
java·算法·leetcode·力扣
如竟没有火炬12 小时前
四数相加贰——哈希表
数据结构·python·算法·leetcode·散列表
半桶水专家12 小时前
GORM 结构体字段标签(Struct Tags)详解
golang·go·gorm
GokuCode12 小时前
【GO高级编程】05.类的扩展与复用
golang·embedding·xcode
Tony Bai13 小时前
Jepsen 报告震动 Go 社区:NATS JetStream 会丢失已确认写入
开发语言·后端·golang
bing.shao13 小时前
Golang 之 defer 延迟函数
开发语言·后端·golang
埃伊蟹黄面13 小时前
模拟算法思想
c++·算法·leetcode