C.滑动窗口-求子数组个数-越短越合法——3258. 统计满足 K 约束的子字符串数量 I

题目链接:3258. 统计满足 K 约束的子字符串数量 I(简单)

算法原理:

👉对应力扣题解

解法:滑动窗口

击败100.00%

时间复杂度O(N)

跟上一题 C.滑动窗口------713. 乘积小于 K 的子数组 一样,同样要注意的是这是求子数组个数,所以ret+=right-left+1,而不是ret++

Java代码:

java 复制代码
class Solution {
    public int countKConstraintSubstrings(String ss, int k) {
        char[] s=ss.toCharArray();
        int n=s.length,zero=0,one=0,ret=0;
        for(int left=0,right=0;right<n;right++){
            //进窗口
            if(s[right]=='0') zero++;
            else one++;
            //出窗口
            while(zero>k&&one>k){
                char out=s[left];
                if(out=='0') zero--;
                else one--;
                left++;
            }
            //更新
            ret+=right-left+1;
        }
        return ret;
    }
}
相关推荐
Gigavision5 小时前
基于BUAA-MIHR数据集的噪声解耦对比学习算法
人工智能·python·深度学习·算法
鹿角片ljp5 小时前
LeetCode 64:最小路径和复盘|二维 DP 与 ACM 模式完整写法
java·数据结构·算法
aramae5 小时前
模拟实现strcmp()(C语言)
c语言·开发语言·后端
彧azz6 小时前
算法设计与分析:贪心与动态规划
数据结构·学习·算法·贪心算法·动态规划
泡海椒6 小时前
PDF 表格样式优化:jquick-pdf 边框、圆角、背景色
java·开发语言·pdf
Beyond_System|系统之外7 小时前
【学编程】Python基础编程题100道(21-60)
开发语言·python·算法
景熙55237 小时前
15.Java 8 Stream 流入门到实战
java·开发语言·数据结构
wno7048 小时前
Spring Security权限控制
java·python·spring
杨运交8 小时前
[071][验证码模块]基于Spring拦截器的验证码认证设计思想
java·后端·spring