【字符串】1358. 包含所有三种字符的子字符串数目

题目:

 

 

 

解答:

思路:双指针。

 

 

 1 class Solution {
 2 public:
 3     int cnt[3];
 4 public:
 5     int numberOfSubstrings(string s) 
 6     {
 7         int len=(int)s.length();
 8         int ans=0;
 9         cnt[0]=cnt[1]=cnt[2]=0;
10 
11         for (int l=0,r=-1;l<len;)
12         {
13             while (r<len && !(cnt[0]>=1 && cnt[1]>=1 && cnt[2]>=1))
14             {
15                 if (++r==len) 
16                 {
17                     break;
18                 }
19                 cnt[s[r]-'a']++;
20             }
21             ans+=len-r;
22             cnt[s[l++]-'a']--;
23         }
24         return ans;
25     }
26 };

 

posted @ 2020-05-04 13:22  梦醒潇湘  阅读(190)  评论(0)    收藏  举报