题目:https://leetcode-cn.com/problems/number-of-substrings-containing-all-three-characters/
class Solution {
public:
int numberOfSubstrings(string s) {
/*
*双指针
*给你一个字符串 s ,它只包含三种字符 a, b 和 c 。
*请你返回 a,b 和 c 都 至少 出现过一次的子字符串数目
*/
int n = s.length();
int num[5];
memset(num,0,sizeof(num));
int ans = 0;
bool flag = 0;
int pos;
int j = 0;
for(int i = 0;i < n;i++) {
num[s[i]-'a']++;
if(num[0]&&num[1]&&num[2]) flag = 1;
while(j<i&&num[0]&&num[1]&&num[2]) num[s[j]-'a']--,++j;
if(flag)
ans += j;//加上以i为结尾的符合题意的子串数
}
return ans;
}
};