统计完全子字符串

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

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;
    }
};
相关推荐
肖爱Kun9 分钟前
STL标准模块库操作
开发语言·音视频
Song_da_da_12 分钟前
C# 接口(Interface)深度解析:规范、解耦与灵活扩展
开发语言·c#
Shan120522 分钟前
无向图的Hierholzer算法流程(二)
算法
政沅同学25 分钟前
基于 C# WPF + HALCON 的工业视觉算法工具框架(开源)
开发语言·c#·wpf
王老师青少年编程25 分钟前
2022年CSP-X复赛真题及题解(T1:独木桥)
c++·真题·csp·信奥赛·复赛·独木桥·csp-x
影寂ldy27 分钟前
C#WinForm 窗体基础(入口、部分类、属性、生命周期事件)
开发语言·c#
2301_7818335228 分钟前
Python 正则表达式入门教程
开发语言·python·正则表达式
gihigo199830 分钟前
基于蒙特卡洛的异常值剔除(RANSAC + MC置信区间)—MATLAB实现
开发语言·算法·matlab
Ting.~1 小时前
在java中接入百度地图
java·开发语言·dubbo
小短腿的代码世界1 小时前
Qt对象树析构链与智能指针协同:零泄漏内存管理架构
开发语言·qt·架构