统计完全子字符串

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

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;
    }
};
相关推荐
一起搞IT吧4 分钟前
Android功耗系列专题理论之十六:功耗不同阶段&不同模块分析说明
android·c++·智能手机·性能优化
炸膛坦客5 分钟前
单片机/C语言八股:(十三)C 语言实现矩阵乘法
c语言·开发语言·矩阵
一个有毅力的吃货12 分钟前
这个SKILL打通了AI写公众号文章的最后一公里
css·算法
free-elcmacom17 分钟前
C++ 函数占位参数与重载详解:从基础到避坑
java·前端·算法
Frostnova丶20 分钟前
LeetCode 1415. 长度为 n 的开心字符串中字典序第 k 小的字符串
数据结构·算法·leetcode
美好的事情能不能发生在我身上20 分钟前
Leetcode热题100中的:技巧专题
算法·leetcode·职场和发展
荣光属于凯撒22 分钟前
P15755 [JAG 2025 Summer Camp #1] JAG Box
c++·算法·贪心算法
2301_8035545223 分钟前
单例模式以及面试可能问的--精写
单例模式·面试·职场和发展
为你奋斗!30 分钟前
Playwright 录屏功能启用离线安装依赖pywin32 pillow
开发语言·chrome·python·语言模型·迁移学习
郝学胜-神的一滴30 分钟前
CMake:解锁C++跨平台工程构建的核心密钥
开发语言·c++·职场和发展