LeetCode--2743. 计算没有重复字符的子字符串数量

2743. 计算没有重复字符的子字符串数量

给定你一个只包含小写英文字母的字符串 s 。如果一个子字符串不包含任何字符至少出现两次(换句话说,它不包含重复字符),则称其为 特殊 子字符串。你的任务是计算 特殊 子字符串的数量。例如,在字符串 "pop" 中,子串 "po" 是一个特殊子字符串,然而 "pop" 不是 特殊 子字符串(因为 'p' 出现了两次)。

返回 特殊 子字符串的数量。

子字符串 是指字符串中连续的字符序列。例如,"abc""abcd" 的一个子字符串,但 "acd" 不是。


LCP 68. 美观的花束和这道题一模一样

func numberOfSpecialSubstrings(s string) int {
    mp := ['z' + 1]int{}
    l := 0
    ans := 0
    for r, x := range s {
        mp[x] ++
        for mp[x] > 1 {
            mp[s[l]] --
            l ++
        }
        ans += r - l + 1
    }
    return ans
}

最后更新于