Golang | Leetcode Golang题解之第467题环绕字符串中唯一的子字符串

题目:

题解:

Go 复制代码
func findSubstringInWraproundString(p string) (ans int) {
    dp := [26]int{}
    k := 0
    for i, ch := range p {
        if i > 0 && (byte(ch)-p[i-1]+26)%26 == 1 { // 字符之差为 1 或 -25
            k++
        } else {
            k = 1
        }
        dp[ch-'a'] = max(dp[ch-'a'], k)
    }
    for _, v := range dp {
        ans += v
    }
    return
}

func max(a, b int) int {
    if b > a {
        return b
    }
    return a
}
相关推荐
北冥you鱼18 小时前
Go语言大数(big.Int)比较大小:原理、方法与最佳实践
开发语言·后端·golang
xcLeigh18 小时前
Go入门:零值与变量默认初始化机制
开发语言·后端·golang
宵时待雨20 小时前
优选算法专题12:队列
算法·leetcode·职场和发展
旖旎夜光20 小时前
LeetCode 738:单调递增的数字(贪心算法) —— 题解
数据结构·c++·算法·leetcode·贪心算法
青山木21 小时前
Hot 100 --- 搜索二维矩阵
java·算法·leetcode·矩阵
旖旎夜光21 小时前
LeetCode 1262:可被三整除的最大和 (贪心算法)—— 题解
数据结构·c++·算法·leetcode·贪心算法
AKA__Zas1 天前
芝士算法(位运算)
java·开发语言·算法·leetcode·学习方法
DLYSB_1 天前
数据库连接池爆满导致全线宕机:我用 Go 写了个“现场声光报警器”,比钉钉快了 10 倍
数据库·golang·钉钉·报警灯
玖玥拾2 天前
LeetCode 88 合并两个有序数组
算法·leetcode