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;
    }
}
相关推荐
鹿角片ljp几秒前
Java多线程编程:从基础到实战的完整指南
java·开发语言·后端
超级无敌大学霸6 分钟前
c语言算术转换及表达式解析
c语言·开发语言
努力学习的小廉11 分钟前
【QT(八)】—— 常用控件(五)
开发语言·qt
期待のcode11 分钟前
Java虚拟机的垃圾回收器
java·开发语言·jvm·算法
星火开发设计15 分钟前
C++ 分支结构:if-else 与 switch-case 的用法与区别
开发语言·c++·学习·算法·switch·知识·分支
txzrxz17 分钟前
数据结构有关的题目(栈,队列,set和map)
数据结构·c++·笔记·算法··队列
qq_4061761418 分钟前
深耕JS防抖与节流:从原理到工程化实践的全方位指南
开发语言·php
2301_7973122621 分钟前
学习Java40天
java·开发语言·学习
Coder_Boy_22 分钟前
基于SpringAI的在线考试系统-DDD(领域驱动设计)核心概念及落地架构全总结
java·大数据·人工智能·spring boot·架构·ddd·tdd
Two_brushes.23 分钟前
C++ 常见特殊类的设计(含有单例模式)
开发语言·c++