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;
    }
}
相关推荐
SadSunset4 分钟前
(37)全注解式开发AOP
java·spring
秃然想通5 分钟前
Java多态完全指南:深入理解“一个接口,多种实现”
java·开发语言
TT哇6 分钟前
Optional<T>
java·spring boot·java-ee
不穿格子的程序员13 分钟前
从零开始写算法——二叉树篇3:对称二叉树 + 二叉树直径
算法
李拾叁的摸鱼日常14 分钟前
Java泛型基本用法与PECS原则详解
java·后端·面试
MediaTea21 分钟前
Python:实例 __dict__ 详解
java·linux·前端·数据库·python
stevenzqzq26 分钟前
Compose基础入门
开发语言·compose
米优27 分钟前
C/C++中实现自定义自动释放堆内存空间类
c语言·开发语言·c++
傻啦嘿哟36 分钟前
Python上下文管理器:优雅处理资源释放的魔法工具
开发语言·python
阿方索37 分钟前
Python 基础简介
开发语言·python