每日OJ_牛客_小红的子串_滑动窗口+前缀和_C++_Java

embedded/2025/3/23 10:34:28/

目录

牛客_小红的子串_滑动窗口+前缀和

题目解析

C++代码

Java代码


牛客_小红的子串_滑动窗口+前缀和

小红的子串

描述:
        小红拿到了一个长度为nnn的字符串,她准备选取一段子串,满足该子串中字母的种类数量在[l,r]之间。小红想知道,一共有多少种选取方案?

输入描述:

第一行输入三个正整数 n,l,rn,
第二行输入一个仅包含小写字母的字符串。
1 ≤ n ≤ 200000
1 ≤ l ≤ r ≤ 26

输出描述:

合法的方案数。


题目解析

        利用前缀和的思想,求种类个数在 [l, r] 区间内子串的个数,等于求 [1, r] 区间内个数 - [1, l - 1] 区间内个数。求种类个数在 [1, count] 区间内子串的个数,可以用滑动窗口来求解。

C++代码

#include <iostream>
#include <string>
using namespace std;
int n, l, r;
string s;// 找出字符种类在 [1, x] 之间的⼦串的个数
long long find(int x) 
{if(x == 0)return 0;int left = 0, right = 0; // 滑动窗⼝int hash[26] = { 0 }, kinds = 0; // 统计窗⼝内字符种类的个数long long ret = 0;while(right < n){if(hash[s[right] - 'a']++ == 0) kinds++;while(kinds > x){if(hash[s[left] - 'a']-- == 1) kinds--;left++;}ret += right - left + 1;right++;}return ret;
}int main()
{cin >> n >> l >> r >> s;cout << find(r) - find(l - 1) << endl;return 0;
}

Java代码

java">import java.util.*;
public class Main
{public static int n, l, r;public static char[] s;// 找出字符种类在 [1, x] 之间的⼦串的个数public static long find(int x){// 滑动窗⼝int left = 0, right = 0;int[] hash = new int[26];int kinds = 0; // 统计窗⼝内字符的种类long ret = 0;while(right < n){if(hash[s[right] - 'a']++ == 0)kinds++;while(kinds > x){if(hash[s[left] - 'a']-- == 1)kinds--;left++;}ret += right - left + 1;right++;}return ret;}public static void main(String[] args){Scanner in = new Scanner(System.in);n = in.nextInt(); l = in.nextInt(); r = in.nextInt();s = in.next().toCharArray();System.out.println(find(r) - find(l - 1));}
}

http://www.ppmy.cn/embedded/174357.html

相关文章

HTML 列表

HTML 支持有序、无序和定义列表: HTML 列表 有序列表 第一个列表项第二个列表项第三个列表项 无序列表 列表项列表项列表项 HTML无序列表 无序列表是一个项目的列表&#xff0c;此列项目使用粗体圆点&#xff08;典型的小黑圆圈&#xff09;进行标记。 无序列表使用 <u…

undo log和redo log的区别

一、undo log undo log&#xff08;回滚日志&#xff09;是InnoDB存储引擎中的事务日志之一&#xff0c;用来保证事务的原子性和一致性。 事务修改数据时&#xff0c;会先把原始数据存入undo log。如果事务回滚&#xff0c;MySQL 用 undo log 恢复数据。 二、redo log redo…

C# 事件机制详解:定义、订阅、触发与应用实践

在 C# 中&#xff0c;事件&#xff08;Event&#xff09;是面向对象编程中的一种重要特性&#xff0c;主要用于处理对象之间的通知和消息传递。通过事件机制&#xff0c;某个对象&#xff08;事件发布者&#xff09;可以通知其他对象&#xff08;事件订阅者&#xff09;发生了一…

专访成都昭音科技Jackal:AI内容营销助力中企走向全球

近年来,随着人工智能技术的迅猛发展,内容营销领域正迎来一场深刻的变革。越来越多的用户和消费者通过AI工具——如智能搜索、推荐系统和虚拟助手——获取信息和做出消费决策。这对企业提出了新的要求:如何确保自身内容能够被AI系统有效收录并推荐给目标受众?在这股浪潮中,一家…

实时监控、数据分析!Web-Check构建你的网站健康检测系统实操方案

文章目录 前言1.关于Web-Check2.功能特点3.安装Docker4.创建并启动Web-Check容器5.本地访问测试6.公网远程访问本地Web-Check7.内网穿透工具安装8.创建远程连接公网地址9.使用固定公网地址远程访问 前言 在数字化运维领域&#xff0c;网站稳定性保障始终是开发者和运维团队的核…

Android Coil3 Fetcher preload批量Bitmap拼接扁平宽图,Kotlin

Android Coil3 Fetcher preload批量Bitmap拼接扁平宽图&#xff0c;Kotlin 在这一篇文章基础上改进&#xff1a; Android Coil3阶梯preload批量Bitmap拼接扁平宽图&#xff0c;Kotlin-CSDN博客文章浏览阅读854次&#xff0c;点赞18次&#xff0c;收藏5次。遗留问题&#xff0c…

《真·滕王阁序》

《滕工阁序》 西二旗故地&#xff0c;后厂新府。 星分百度网易&#xff0c;地接腾讯阿里。 襟PRD而带OKR&#xff0c;控需求以引撕逼。 物华天宝&#xff0c;龙光射工卡芯片&#xff1b;人杰地灵&#xff0c;徐孺坐产品经理之榻。 工位雾列&#xff0c;码农星驰。 台积电…

网络安全设备配置与管理-实验4-防火墙AAA服务配置

实验4-p118防火墙AAA服务配置 从这个实验开始&#xff0c;每一个实验都是长篇大论&#x1f613; 不过有好兄弟会替我出手 注意&#xff1a;1. gns3.exe必须以管理员身份打开&#xff0c;否则ping不通虚拟机。 win10虚拟机无法做本次实验&#xff0c;必须用学校给的虚拟机。首…