Substrings of Size Three with Distinct Characters

A string is good if there are no repeated characters.

Given a string s, return the number of good substrings of length three in s​​​​​​.

Note that if there are multiple occurrences of the same substring, every occurrence should be counted.

substring is a contiguous sequence of characters in a string.

Example 1:

Input: s = "xyzzaz"
Output: 1
Explanation: There are 4 substrings of size 3: "xyz", "yzz", "zza", and "zaz". 
The only good substring of length 3 is "xyz".

Example 2:

Input: s = "aababcabc"
Output: 4
Explanation: There are 7 substrings of size 3: "aab", "aba", "bab", "abc", "bca", "cab", and "abc".
The good substrings are "abc", "bca", "cab", and "abc".

Approach

C++

#include <bits/stdc++.h>
using namespace std;

int countGoodSubstrings(string s)
{
    set<charst;
    map<charintmp;

    if (s.size() < 3)
        return 0;
    for (int i = 0i < 3i++)
    {
        mp[s[i]]++;
    }
    int cnt = 0;
    for (int i = 3i < s.size(); i++)
    {
        if (mp.size() == 3)
            cnt++;
        mp[s[i - 3]]--;
        if (mp[s[i - 3]] == 0)
            mp.erase(s[i - 3]);
        mp[s[i]]++;
    }
    if (mp.size() == 3)
        cnt++;
    return cnt;
}

int main()
{
    string s = "aababcabc";

    cout << countGoodSubstrings(s<< "\n";

    return 0;
}


No comments:

Post a Comment