统计完全子字符串

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

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;
    }
};
相关推荐
时空系10 小时前
第7篇:功能——打造你的工具箱 Rust中文编程
开发语言·网络·rust
csbysj202010 小时前
CSS !important:深度解析与最佳实践
开发语言
初心未改HD10 小时前
Go语言测试与Benchmark:测试驱动开发的实践指南
开发语言·golang
代码不停10 小时前
BFS解决floodfill算法题目练习
算法·宽度优先
chxii11 小时前
lua流程控制语句和table(表)数据结构
开发语言·junit·lua
上弦月-编程11 小时前
C语言指针从入门到实战
java·jvm·算法
WL_Aurora11 小时前
Python 算法基础篇之树和二叉树
python·算法
txzrxz11 小时前
关于前缀和
算法·动态规划·图论
杨连江11 小时前
载流子矩阵限域束缚实现常温常压超导的理论与结构设计
算法
逻辑驱动的ken11 小时前
Java高频面试考点场景题20
java·开发语言·深度学习·面试·职场和发展