统计完全子字符串

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

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;
    }
};
相关推荐
考研保研资料分享几秒前
211英语专业跨保清华法学:2022年法学面试与口译考核复盘
面试·职场和发展
码途行者1 分钟前
处理超时未支付订单:两套轻量化方案,附 PHP 极简实现
开发语言·redis·php
phoenix@Capricornus3 分钟前
LDA 协方差矩阵(MATLAB `fitcdiscr`)
算法·matlab·矩阵
lojox3 分钟前
C++ 手写 STL list(双向循环链表)原理剖析与实现
c++·链表·list
云和数据.ChenGuang5 分钟前
LangChain 实战指南:从入门到构建智能应用
开发语言·人工智能·python·langchain
青少儿编程课堂7 分钟前
蓝桥杯·全国青少年信息素养大赛·电子学会C/C++考级:拓扑排序课程表排课解析
c++·python·算法·bfs·信息学竞赛
const_qiu8 分钟前
第三章 04:3.6 基础调用链的构建
开发语言·python
向上的车轮9 分钟前
Python 大数据处理不慢:Polars + DuckDB + Arrow 实战指南
开发语言·python
考研保研资料分享9 分钟前
2024双非材料保研复旦:五校面试题与科研复盘
面试·职场和发展
Nebula_g14 分钟前
云禾外卖补充—项目整体后端运行逻辑-对流程的更深层次理解
java·开发语言·网络·数据库·状态模式·javase