统计完全子字符串

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

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;
    }
};
相关推荐
李可以量化11 小时前
Tornado 从了解到精通(四)上:实战搭建 Web 应用与核心组件详解
算法
一朵好运莲11 小时前
智能体使用 Chrome DevTools MCP 调试浏览器
开发语言·javascript·react.js
秋田君11 小时前
QT_JSON文件操作
开发语言·qt·json
老赵的博客11 小时前
可维护性 可扩展性 可复用性
开发语言·c++
sibylyue11 小时前
工作流表单和流程设计前端
开发语言·javascript·开源
linux-hzh11 小时前
百日算法修炼 · Day 09
数据结构·算法·排序算法
一个游离的指针11 小时前
JS中的对象的相关概念
开发语言·javascript·原型模式
DFT计算杂谈11 小时前
Janus单层Cr2SSe中的应变可调多压电效应与谷电子学
人工智能·算法·机器学习
今天AI了吗11 小时前
从 LLM 到 Agent Skill:把 AI 底层概念串起来
数据库·人工智能·sql·深度学习·神经网络·算法·机器学习
jaysee-sjc12 小时前
【JavaWeb】Tlias智能学习辅助系统|后端Web实战(登录认证)
java·开发语言·前端·学习·mybatis