统计完全子字符串

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

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;
    }
};
相关推荐
午安~婉几秒前
javaScript八股问题
开发语言·javascript·原型模式
想不明白的过度思考者7 分钟前
Rust——异步递归深度指南:从问题到解决方案
开发语言·后端·rust
voice67030 分钟前
密码学实验二
算法·密码学·哈希算法
芝麻开门-新起点44 分钟前
flutter 生命周期管理:从 Widget 到 State 的完整解析
开发语言·javascript·ecmascript
Blossom.1181 小时前
把AI“编”进草垫:1KB决策树让宠物垫自己报「如厕记录」
java·人工智能·python·算法·决策树·机器学习·宠物
寂静山林1 小时前
UVa 10989 Bomb Divide and Conquer
算法
我先去打把游戏先1 小时前
ESP32开发指南(基于IDF):连接AWS,乐鑫官方esp-aws-iot-master例程实验、跑通
开发语言·笔记·单片机·物联网·学习·云计算·aws
郭源潮12 小时前
《Muduo网络库:实现TcpServer类终章》
服务器·网络·c++·网络库
兮山与2 小时前
算法23.0
算法
逻极2 小时前
Rust数据类型(上):标量类型全解析
开发语言·后端·rust