统计完全子字符串

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

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;
    }
};
相关推荐
北极有牛几秒前
cuda算子--矩阵转置
人工智能·算法
不灭的黄金瞳12314 分钟前
Java数据类型与变量
java·开发语言·intellij-idea
f狐0狸x18 分钟前
【C++修炼之路】C++继承的探索
c++·继承
程序猫.19 分钟前
算法刷题笔记:模拟题从入门到实战(含 LeetCode 例题与习题)
java·数据结构·算法
虚无的纽扣22 分钟前
【C++】C++11的魔法:不止右值引用,C++11赋予的编程神力
c++
liliangcsdn23 分钟前
zpos因果对冲的分析和示例
算法
小白学大数据33 分钟前
Python 项目实战:用 Flask 构建生产级 MySQL 增删改查 REST API
开发语言·人工智能·python·mysql·flask
Shan120537 分钟前
经典算法题学习:跳跃游戏IV(一)
算法
Nil2081 小时前
leetcode 20有效的括号
开发语言
AIGCmagic社区1 小时前
灵巧手VLA真机均分71%,北大DeCAL用接触门控接入触觉
人工智能·算法·aigc·ai多模态