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;
    }
}
相关推荐
小小小米粒4 分钟前
Maven Tools
java
禹凕4 分钟前
Python编程——进阶知识(多线程)
开发语言·爬虫·python
铉铉这波能秀8 分钟前
LeetCode Hot100数据结构背景知识之字典(Dictionary)Python2026新版
数据结构·python·算法·leetcode·字典·dictionary
蜡笔小马17 分钟前
10.Boost.Geometry R-tree 空间索引详解
开发语言·c++·算法·r-tree
IOsetting17 分钟前
金山云主机添加开机路由
运维·服务器·开发语言·网络·php
kali-Myon18 分钟前
2025春秋杯网络安全联赛冬季赛-day1
java·sql·安全·web安全·ai·php·web
我是咸鱼不闲呀21 分钟前
力扣Hot100系列20(Java)——[动态规划]总结(下)( 单词拆分,最大递增子序列,乘积最大子数组 ,分割等和子集,最长有效括号)
java·leetcode·动态规划
唐梓航-求职中26 分钟前
编程-技术-算法-leetcode-288. 单词的唯一缩写
算法·leetcode·c#
仟濹27 分钟前
【算法打卡day3 | 2026-02-08 周日 | 算法: BFS】3_卡码网99_计数孤岛_BFS | 4_卡码网100_最大岛屿的面积DFS
算法·深度优先·宽度优先
清水白石00831 分钟前
深入解析 LRU 缓存:从 `@lru_cache` 到手动实现的完整指南
java·python·spring·缓存