当前位置: 首页 > news >正文

记录--有惊无险

问题描述

解决了巨石迷阵,小 L L L长舒一口气。他坐在一棵繁茂的树下刚打开地图,突然,四周轰隆隆又一阵巨响,面前又出现了许多巨石。
情报有误!情报有误!!
根据搜集来的情报,这里不应该再次出现这么多巨石!
L L L赶忙起身,屏气凝神,重新专注起来…
有一个长度为 n n n的字符串,找到一个区间 [ l , r ] [l,r] [l,r],使得处于区间 [ l , r ] [l,r] [l,r]的石块上的字母,26个大写字母都至少出现一次。输出这个区间长度的最小值。
数据保证有解

输入格式

第-行一个整数 n , n < 2 × 1 0 5 n,n<2\times10^5 n,n<2×105
第二行,一个长度为 n n n的字符串

输出格式

一行,一个数,代表最短长度

样例输入

30
30
AABBCDEFGHIJKLMNOPQRSTUVWXYZZZ

样例输出

27

思路

做一个窗口滑动函数,保证窗口的距离在符合条件的同时最小。

完整代码

#include<bits/stdc++.h>
using namespace std;

typedef long long ll;

//做一个窗口滑动函数
int func(const string& s) {
    unordered_map<char, int> charCount;
    int tot = 26; 
    int l = 0, minlen = 999999999;
    int count = 0;
    //保持[l, r]区间中出现26个字母时,尽量保持最小距离(l增大)
    for (int r = 0; r < s.size(); r++) {
        if (charCount[s[r]] == 0) {
            count++;
        }
        charCount[s[r]]++;

        while (count == tot) {
            minlen = min(minlen, r - l + 1);
            charCount[s[l]]--;
            if (charCount[s[l]] == 0) {
                count--;
            }
            l++;
        }
    }

    return minlen;
}

int main() {
    int n = 0;
    cin >> n;
    string s;
    cin >> s;

    int ans = func(s);
    cout << ans << endl;

    return 0;
}
http://www.dtcms.com/a/62566.html

相关文章:

  • 产城融合典范:树莓科技如何助力宜宾数字经济腾飞​
  • 自启动、关联启动的拦截规则
  • 4g串口发短信踩坑
  • 【文件系统】
  • C语言for循环语句的用法(非常详细)
  • Ubuntu 源码安装 Qt5
  • 报错E0513:不能将 “const wchar_t *“ 类型的值分配到 “LPWSTR“ (aka “wchar_t *“) 类型的实体
  • 【性能测试入门_01性能测试jmeter基础实操场景详解】
  • # 如何确认elementary os (linux)使用的是Wayland而不是x11?
  • TCP连接过程图解
  • Android Compose是如何使用什么架构,多个Activity?还是Fragment?compose的ui又是如何卸载和挂载的呢?
  • 【day10】智慧导览:学习LBS定位精度标准
  • markdown转docx
  • Java基础关键_020_集合(四)
  • 电网电压暂态扰动机理与工业设备抗失压防护策略研究
  • 【SpringBoot】深入剖析 Spring Boot 自动装配原理(附源码与实战)
  • 内存检测工具——Qt Creator
  • git使用命令总结
  • python总结(3)
  • QT工程打开、编译、运行流程
  • Netty基础—2.网络编程基础三
  • Dify平台训练个人文档助手
  • 2024年群智能SCI1区TOP:混沌可行性恢复粒子群算法CEPSO,深度解析+性能实测
  • 20250212:linux系统DNS解析卡顿5秒的bug
  • 关于mybatis查询时,时间字段的映射问题
  • Java 集合框架大师课:集合框架源码解剖室(五)
  • 内网安全防护新思路 —— HFish + ELK 与 T-Pot 全面蜜罐系统比较分析
  • Ollama杂记
  • bin/python: bad interpreter: No such file or directory
  • Python:正则表达式