1358. Number of Substrings Containing All Three Characters

Medium

Given a string s consisting only of characters a, b and c.

Return the number of substrings containing at least one occurrence of all these characters a, b and c.

Example 1:

Input: s = "abcabc"
Output:
 10
Explanation:
 The substrings containing at least one occurrence of the characters a, b and c are "abc", "abca", "abcab", "abcabc", "bca", "bcab", "bcabc", "cab", "cabc" and "abc" (again). 

Example 2:

Input: s = "aaacb"
Output:
 3
Explanation:
 The substrings containing at least one occurrence of the characters a, b and c are "aaacb", "aacb" and "acb". 

Example 3:

Input: s = "abc"
Output:
 1

Constraints:

  • 3 <= s.length <= 5 x 10^4

  • s only consists of a, b or c characters.

解題

注意: Substring 可以重複

func numberOfSubstrings(s string) int {
    arr := []int{0, 0, 0}
    left := 0
    right := 0
    ans := 0
    

    for right < len(s)  {
        arr[s[right] - 'a']++

        for left <= right && arr[0] > 0 && arr[1] > 0 && arr[2] > 0 {
            arr[s[left] - 'a']--
            left++
            ans += len(s) - right
        }

        
        right++
    }

    return ans
}

Last updated