统计完全子字符串

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

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;
    }
};
相关推荐
SEO_juper几秒前
手写 llms.txt 验证器:让 AI 更愿意引用你的网站(GEO)
开发语言·人工智能·python·聚类·seo·独立站
CCCCCCCCharlie1 分钟前
从0到1:一个字节的磁盘之旅
linux·开发语言·c++
比兔代理4 分钟前
纯净IP是什么?从IP信誉、黑名单与ASN角度原理解析
开发语言·php
Coder-magician11 分钟前
图论总结篇
算法·图论
benjiangliu15 分钟前
恩培趣味计算机视觉-01-conda环境和Python库
开发语言·python·conda
艾莉丝努力练剑15 分钟前
【AI大模型接入SDK】ChatServer接口实现
c++·人工智能·学习·ai·架构·大模型·sdk
有同事要进步17 分钟前
Leecode第68题:x的平方根
java·数据结构·算法
我喜欢就喜欢20 分钟前
DeepSeek Harness 开源贡献手记:从零到合入主线
开发语言·人工智能
要练八块腹肌21 分钟前
AVL树的讲解与实现
c++
吹什么轩23 分钟前
linux系统复习:进程优先级与O(1)调度
java·linux·算法