统计完全子字符串

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

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