统计完全子字符串

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

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;
    }
};
相关推荐
旺仔.29115 分钟前
STL排序算法详解
数据结构·算法·排序算法
酉鬼女又兒17 分钟前
零基础快速入门前端蓝桥杯Web备考:BOM与定时器核心知识点详解(可用于备赛蓝桥杯Web应用开发)
开发语言·前端·javascript·职场和发展·蓝桥杯
望眼欲穿的程序猿18 分钟前
MacOS自定义安装Rust
开发语言·macos·rust
美狐美颜sdk21 分钟前
美颜SDK是什么?直播/短视频美颜SDK技术详解
人工智能·算法·美颜sdk·直播美颜sdk·美颜api
wjs202422 分钟前
CSS 动画:深入浅出的探索与实践
开发语言
wjs202426 分钟前
二分搜索树
开发语言
沐知全栈开发32 分钟前
Memcached delete 命令详解
开发语言
lly20240633 分钟前
Lua 基本语法
开发语言
DowneyJoy33 分钟前
【Unity3D补充知识点】常用数据结构分析-集合(List<T>)
数据结构·unity·c#·list
华农DrLai42 分钟前
什么是远程监督?怎么自动生成训练数据?
人工智能·算法·llm·prompt·知识图谱