链接:https://leetcode-cn.com/problems/number-of-substrings-containing-all-three-characters/
滑动窗口法,保持窗口内的子串有
a
,
b
,
c
a,b,c
a,b,c,累加滑动窗口尾部到字符串尾部的距离即可。
C++代码:
class Solution {
public:
int numberOfSubstrings(string s) {
int res = 0;
vector<int> record(3,0);
int i = 0;
int j = 0;
while(i<s.size())
{
if(test(record))
{
res+=s.size()-j+1;
record[s[i++]-'a']--;
}
else
{
if(j==s.size())
break;
else
record[s[j++]-'a']++;
}
}
return res;
}
bool test(vector<int> record)
{
if(record[0]>=1&&record[1]>=1&&record[2]>=1)
return true;
else
return false;
}
};