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.
A 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<char> st;map<char, int> mp;if (s.size() < 3)return 0;for (int i = 0; i < 3; i++){mp[s[i]]++;}int cnt = 0;for (int i = 3; i < 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