统计完全子字符串

很不错的计数问题,用到了分组循环技巧和滑动窗口 代码的实现方式也非常值得多看

cpp 复制代码
class Solution {
public:
    int f(string s,int k){
        int res = 0;
        for(int m=1;m<=26&&k*m<=s.size();++m){
            int cnt[27]{};
            auto check=[&](){
                for(int i=0;i<=26;++i){
                    if(cnt[i]&&cnt[i]!=k)return;
                }
                res++;
            };

            for(int r=0;r<s.size();++r){
                cnt[s[r]-'a']++;
                int l = r+1-k*m;
                if(l>=0){
                    check();
                    cnt[s[l]-'a']--;
                }
            }
        }
        return res;
    }
    int countCompleteSubstrings(string word, int k) {
        int n = word.size();
        int res = 0;
        for(int i=0;i<n;){
            int start = i;
            ++i;
            while(i<n&&abs(int(word[i]-word[i-1]))<=2)++i;
            res+=f(word.substr(start,i-start),k);
        }
        return res;
    }
};
相关推荐
玉小格2 分钟前
一次关于Python的总结
算法
星辰_mya3 分钟前
CountDownLatch深度解析
java·开发语言·后端·架构
ychqsq4 分钟前
54.新芽
经验分享·职场和发展
伊甸34 分钟前
从企业级项目学敏感词过滤:DFA算法与双层缓存实战
java·算法·缓存
laplaya7 分钟前
使用 vcpkg 管理 C++ 项目中的依赖
开发语言·c++
bIo7lyA8v17 分钟前
算法中的随机化思想及其复杂度收益评估的技术8
算法
feixing_fx18 分钟前
选择器的威力——深入理解优先级计算与层叠规则
开发语言·前端·css·前端框架·html
数据法师21 分钟前
视频文件重复检测工具:基于哈希与视频指纹的三级筛选机制
算法·音视频·哈希算法
其实防守也摸鱼24 分钟前
软件安全与漏洞--Windows底层原理与软件逆向工程基础
linux·网络·数据库·算法·安全·安全架构·软件安全与漏洞
6v6-博客27 分钟前
C语言字符串中空格的表示方法
c语言·开发语言