题目
思路
- 采用双指针,每次都找到包含a,b,c的最小窗口的长度。那么之后所有的字符加进来都是可以满足条件的
代码
class Solution {
public:
int numberOfSubstrings(string s) {
int l = 0, r = l, ans = 0;
int cur[3] = {0};
while(l < s.size() - 2){
while(r < s.size() && !(cur[0] >= 1 && cur[1] >= 1 && cur[2] >= 1)) cur[s[r] - 'a']++, r++;
if(cur[0] >= 1 && cur[1] >= 1 && cur[2] >= 1) ans += s.size() - r + 1;
cur[s[l] - 'a']--;
l++;
}
return ans;
}
};