统计完全子字符串

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

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;
    }
};
相关推荐
leo03083 分钟前
新一代python管理工具--uv
开发语言·python·uv
熊猫钓鱼>_>12 分钟前
Python小工具开发实战:从零构建自动化文件管理器的心得与体悟
开发语言·python·自动化
lb291721 分钟前
关于golang热加载安装,实时响应
开发语言·后端·golang·热加载
陈奕迅本讯27 分钟前
并发编程-Synchronized
开发语言·c#
康小庄28 分钟前
AQS独占模式——资源获取和释放源码分析
java·开发语言·jvm·spring boot·spring·spring cloud·nio
草明35 分钟前
macOS 查看当前命令行的ruby的安装目录
开发语言·macos·ruby
wusixuan13100438 分钟前
最大闭合子图学习笔记 / P2805 [NOI2009] 植物大战僵尸
笔记·学习·算法·最大闭合子图
汤姆yu43 分钟前
基于python大数据的nba球员可视化分析系统
大数据·开发语言·python
独行soc1 小时前
2025年渗透测试面试题总结-字节跳动[实习]安全研发员(题目+回答)
linux·科技·安全·面试·职场和发展·渗透测试
feifeigo1231 小时前
python从环境变量和配置文件中获取配置参数
开发语言·python·adb