aboutsummaryrefslogtreecommitdiff
path: root/num_substrings_3_char.py
blob: 13da3c4609818722c4f42dc7102cdbbab004e7c7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 1358. Number of Substrings Containing All Three Characters

"""
given a string 's' consisting only of characters 'a', 'b', and 'c'. return
the number of substrings containing at least one occurence of all these
characters 'a', 'b', and 'c'.
"""


class Solution(object):
    def numberOfSubstrings(self, s):
        """
        :type s: str
        :rtype: int
        """
        cnt = {c: 0 for c in "abc"}
        ans, i = 0, 0
        for j in range(len(s)):
            cnt[s[j]] += 1
            while all(cnt.values()):
                cnt[s[i]] -= 1
                i += 1
            ans += i
        return ans


if __name__ == "__main__":
    obj = Solution()
    print(obj.numberOfSubstrings(s="abcabc"))
    print(obj.numberOfSubstrings(s="aaacb"))
    print(obj.numberOfSubstrings(s="abc"))