LeetCode:3258.统计满足k约束的子串数量 I(滑动窗口 Java)

目录

[3258.统计满足k约束的子串数量 I](#3258.统计满足k约束的子串数量 I)

题目描述:

实现代码与解析:

滑动窗口

原理思路:


3258.统计满足k约束的子串数量 I

题目描述:

给你一个 二进制 字符串 s 和一个整数 k

如果一个 二进制字符串 满足以下任一条件,则认为该字符串满足 k 约束

  • 字符串中 0 的数量最多为 k
  • 字符串中 1 的数量最多为 k

返回一个整数,表示 s 的所有满足 k 约束的子字符串的数量。

示例 1:

**输入:**s = "10101", k = 1

**输出:**12

解释:

s 的所有子字符串中,除了 "1010""10101""0101" 外,其余子字符串都满足 k 约束。

示例 2:

**输入:**s = "1010101", k = 2

**输出:**25

解释:

s 的所有子字符串中,除了长度大于 5 的子字符串外,其余子字符串都满足 k 约束。

示例 3:

**输入:**s = "11111", k = 1

**输出:**15

解释:

s 的所有子字符串都满足 k 约束。

提示:

  • 1 <= s.length <= 50
  • 1 <= k <= s.length
  • s[i]'0''1'

Related Topics

  • 字符串
  • 滑动窗口

实现代码与解析:

滑动窗口

java 复制代码
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public int countKConstraintSubstrings(String s, int k) {

        int n = s.length();
        int res = 0;
        int l = 0;
        int cnt0 = 0, cnt1 = 0;
        for (int r = 0; r < n; r++) {
            if (s.charAt(r) == '0') {
                cnt0++;
            }
            if (s.charAt(r) == '1') {
                cnt1++;
            }
            while (cnt0 > k && cnt1 > k) {
                if (s.charAt(l) == '0') cnt0--;
                if (s.charAt(l) == '1') cnt1--;
                l++;
            }
            res += r - l + 1;
        }
        return res;
    }
}
//leetcode submit region end(Prohibit modification and deletion)

原理思路:

遍历右指针,记录0和1的个数,求出当前右指针情况下,满足条件的最长长度。如果满足条件,收缩左指针,直到满足条件。

相关推荐
云烟成雨TD21 小时前
Spring AI Alibaba 1.x 系列【6】ReactAgent 同步执行 & 流式执行
java·人工智能·spring
小O的算法实验室21 小时前
2026年ASOC,基于深度强化学习的无人机三维复杂环境分层自适应导航规划方法,深度解析+性能实测
算法·无人机·论文复现·智能算法·智能算法改进
于慨21 小时前
Lambda 表达式、方法引用(Method Reference)语法
java·前端·servlet
swg32132121 小时前
Spring Boot 3.X Oauth2 认证服务与资源服务
java·spring boot·后端
gelald21 小时前
SpringBoot - 自动配置原理
java·spring boot·后端
殷紫川21 小时前
深入理解 AQS:从架构到实现,解锁 Java 并发编程的核心密钥
java
一轮弯弯的明月21 小时前
贝尔数求集合划分方案总数
java·笔记·蓝桥杯·学习心得
chenjingming66621 小时前
jmeter线程组设置以及串行和并行设置
java·开发语言·jmeter
殷紫川21 小时前
深入拆解 Java volatile:从内存屏障到无锁编程的实战指南
java
eddieHoo1 天前
查看 Tomcat 的堆内存参数
java·tomcat