统计完全子字符串

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

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;
    }
};
相关推荐
健康平安的活着5 分钟前
java中乐观锁+事务在批量导入,批量审批案例的使用
java·开发语言
AI浩6 分钟前
UTPTrack:迈向简单统一的视觉跟踪令牌剪枝
算法·机器学习·剪枝
feng_you_ying_li7 分钟前
stack的实现,queue的实现,deque的介绍和priority_queue的实现以及仿函数的介绍与运用
c++
lxh011315 分钟前
重复的DNA序列
开发语言·javascript·ecmascript
nananaij16 分钟前
【LeetCode-02 最小偶倍数 python解法】
python·算法·leetcode
倾心琴心16 分钟前
【agent辅助pcb routing coding学习】实践4 kicad pcb 核心类层次关系
算法·agent·pcb·eda·routing
froginwe1117 分钟前
Web 词汇表
开发语言
im_AMBER21 分钟前
Leetcode 139 最后一个单词的长度 | 找出字符串中第一个匹配项的下标
开发语言·算法·leetcode
Frostnova丶22 分钟前
(6)LeetCode.42 接雨水
数据结构·算法·leetcode
像污秽一样24 分钟前
算法设计与分析-习题4.4
数据结构·算法·排序算法·深度优先