统计完全子字符串

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

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;
    }
};
相关推荐
每次的天空19 分钟前
kotlin与MVVM结合使用总结(三)
开发语言·microsoft·kotlin
虾球xz19 分钟前
游戏引擎学习第244天: 完成异步纹理下载
c++·学习·游戏引擎
矛取矛求27 分钟前
C++区别于C语言的提升用法(万字总结)
c语言·c++
mit6.82427 分钟前
[贪心_7] 最优除法 | 跳跃游戏 II | 加油站
数据结构·算法·leetcode
keep intensify29 分钟前
通讯录完善版本(详细讲解+源码)
c语言·开发语言·数据结构·算法
ephemerals__32 分钟前
【c++11】c++11新特性(下)(可变参数模板、default和delete、容器新设定、包装器)
开发语言·c++
shix .36 分钟前
2025年PTA天梯赛正式赛 | 算法竞赛,题目详解
数据结构·算法
先生沉默先40 分钟前
c#接口_抽象类_多态学习
开发语言·学习·c#
风铃儿~1 小时前
Java面试高频问题(26-28)
java·算法·面试
wuqingshun3141591 小时前
蓝桥杯 4. 卡片换位
算法·职场和发展·蓝桥杯