力扣1358.包含所有三种字符的子字符串数目

打印 上一主题 下一主题

主题 671|帖子 671|积分 2013

力扣1358.包含所有三种字符的子字符串数目



  • 遍历左端点 找到最小的子字符串

    • res += n - j(右边全部)

    1.   class Solution {
    2.   public:
    3.       int numberOfSubstrings(string s) {
    4.           unordered_map<char,int> cnt;
    5.           int n = s.size(),res=0,count=3;
    6.           for(int i=0,j=0;j<n;j++)
    7.           {
    8.               if(!cnt.count(s[j])) count--;
    9.               cnt[s[j]] ++;
    10.               while(!count)
    11.               {
    12.                   res += n - j;
    13.                   if(--cnt[s[i]] == 0)
    14.                   {
    15.                       count++;
    16.                       cnt.erase(s[i]);
    17.                   }
    18.                   i++;
    19.               }
    20.           }
    21.           return res;
    22.       }
    23.   };
    复制代码

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

愛在花開的季節

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表