统计完全子字符串

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

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;
    }
};
相关推荐
山楂树の24 分钟前
买卖股票的最佳时机(动态规划)
算法·动态规划
大头流矢27 分钟前
C++的类与对象·三部曲:初阶
开发语言·c++
weixin_4331793329 分钟前
Python - word jumble游戏
开发语言·python
AAA.建材批发刘哥37 分钟前
03--C++ 类和对象中篇
linux·c语言·开发语言·c++·经验分享
jghhh0140 分钟前
MATLAB实现弹道仿真源代码
开发语言·matlab
好奇龙猫43 分钟前
【大学院-筆記試験練習:线性代数和数据结构(1)】
数据结构·数学
小O的算法实验室1 小时前
2024年IEEE TMC SCI1区TOP,面向无人机辅助 MEC 系统的轨迹规划与任务卸载的双蚁群算法,深度解析+性能实测
算法·无人机·论文复现·智能算法·智能算法改进
拾荒的小海螺1 小时前
C#:PdfiumViewer 高效解析和操作 PDF 的技术指南
开发语言·pdf·c#
人道领域1 小时前
【零基础学java】(方法引用)
java·开发语言
Macbethad1 小时前
TwinCAT半导体设备IO Simulator技术方案
开发语言