蓝桥杯备考:双指针(滑动窗口)算法之字符串

这道题咱首先用26个元素的数组来充当哈希数组来标记26个字母出现的个数

比如'a'-'a'放在0号元素,'b'-'a'放在1号元素

kind从0开始,如果进窗口的元素之前是0,就让kind++

如果满足kind==26的时候就是合法的一个子串,就进入循环,每次更新字符串长度,让left指的元素出窗口,我们来写一下代码

cpp 复制代码
#include <iostream>
using namespace std;
string s;
int mp[26];
int kind;
int main()
{
    cin >> s;
    int n = s.size();
    int ret = 1e6+10;
    for(int left = 0,right = 0;right <n;right++)
    {
        if(mp[s[right]-'a']++ == 0) kind++;
        while(kind == 26)
        {
            ret = min(ret,right-left+1);
            if(mp[s[left]-'a']-- == 1) kind--;
            left++;
        }
        
    }
    cout << ret << endl;
    
    
    
    
    
    return 0;
}
相关推荐
春日见1 天前
丝滑快速拓展随机树 S-RRT(Smoothly RRT)算法核心原理与完整流程
人工智能·算法·机器学习·路径规划算法·s-rrt
Code小翊1 天前
”回调“高级
算法·青少年编程
云里雾里!1 天前
力扣 977. 有序数组的平方:双指针法的优雅解法
算法·leetcode·职场和发展
一只侯子1 天前
Face AE Tuning
图像处理·笔记·学习·算法·计算机视觉
jianqiang.xue1 天前
别把 Scratch 当 “动画玩具”!图形化编程是算法思维的最佳启蒙
人工智能·算法·青少年编程·机器人·少儿编程
不许哈哈哈1 天前
Python数据结构
数据结构·算法·排序算法
J***79391 天前
后端在分布式系统中的数据分片
算法·哈希算法
天真小巫1 天前
2025.11.28总结
职场和发展
sin_hielo1 天前
leetcode 2872
数据结构·算法·leetcode
dragoooon341 天前
[优选算法专题八.分治-归并 ——NO.49 翻转对]
算法