链接: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;
}
};
本文介绍了一种使用滑动窗口法解决LeetCode中关于寻找包含所有三种字符的子字符串数量的问题。通过维护一个窗口,确保窗口内含有'a','b','c'三种字符,并累计符合条件的子字符串数量。
&spm=1001.2101.3001.5002&articleId=108166668&d=1&t=3&u=64adcfe15f0f422a96798b82fb20a370)
606

被折叠的 条评论
为什么被折叠?



