统计完全子字符串

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

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;
    }
};
相关推荐
青 春 记 忆14 小时前
LeetCode 21. 合并两个有序链表|Python 解法详解
python·算法·leetcode·链表
c2385616 小时前
MySQL 基础用法(上):库表管理与数据增删改
c语言·数据库·c++·mysql
李永奉16 小时前
C语言-嵌入式开发C语言常用预处理指令合集
c语言·开发语言
Sagittarius_A*17 小时前
后量子密码|通识认知 03|量子威胁辟谣:Grover 算法对对称密码的影响与误区
算法·信息安全·密码学·量子计算·pqc·后量子密码
光源【时光寸寸又逢君】17 小时前
第三方平台预览我方级联监控点串流问题排查
c++·iot
测试者家园17 小时前
AI如何发现测试人员看不到的问题?
人工智能·职场和发展·agent·智能化测试·幻觉检测·行为漂移
上海安当技术17 小时前
敏感数据怎么防拖库?信封加密(DEK+KEK 二层密钥)架构设计与 Java 实战
java·开发语言·python
我是唐青枫17 小时前
Java JCommander 实战详解:用注解解析命令行参数
java·开发语言
大鹏说大话17 小时前
C++ 内存布局详解:类、虚函数、虚表底层原理
java·开发语言
键盘会跳舞17 小时前
C++:容器适配器 queue 的源码级拆解
开发语言·c++·queue