统计完全子字符串

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

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;
    }
};
相关推荐
2301_800895103 分钟前
hh的蓝桥杯每日一题
算法·职场和发展·蓝桥杯
老鱼说AI8 分钟前
现代计算机系统1.2:程序的生命周期从 C/C++ 到 Rust
c语言·c++·算法
仰泳的熊猫10 分钟前
题目1099:校门外的树
数据结构·c++·算法·蓝桥杯
求梦82013 分钟前
【力扣hot100题】反转链表(18)
算法·leetcode·职场和发展
智航GIS26 分钟前
10.7 pyspider 库入门
开发语言·前端·python
NAGNIP26 分钟前
机器学习特征工程中的特征选择
算法·面试
跟着珅聪学java30 分钟前
JavaScript 底层原理
java·开发语言
l1t32 分钟前
DeepSeek辅助编写的利用位掩码填充唯一候选数方法求解数独SQL
数据库·sql·算法·postgresql
项目題供诗35 分钟前
C语言基础(二)
c语言·开发语言
Z1Jxxx36 分钟前
反序数反序数
数据结构·c++·算法