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

这道题咱首先用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;
}
相关推荐
带多刺的玫瑰13 分钟前
Leecode刷题C语言之全排列②
java·数据结构·算法
tt55555555555517 分钟前
每日一题--数组中只出现一次的两个数字
c语言·数据结构·算法·leetcode
_周游22 分钟前
【数据结构】_队列经典算法OJ:循环队列
数据结构·算法
测试杂货铺2 小时前
Jmeter常用的几种断言方法
自动化测试·软件测试·python·测试工具·jmeter·职场和发展·压力测试
Luo_LA3 小时前
【LeetCode Hot100 堆】第 K 大的元素、前 K 个高频元素
数据结构·算法·leetcode
qy发大财3 小时前
分割回文串(力扣131)
算法·leetcode·职场和发展
源代码•宸3 小时前
Leetcode—252. 会议室【简单】Plus
c++·经验分享·算法·leetcode·排序
IT古董4 小时前
【漫话机器学习系列】087.常见的神经网络最优化算法(Common Optimizers Of Neural Nets)
神经网络·算法·机器学习
CM莫问5 小时前
什么是图神经网络?
人工智能·python·深度学习·算法·图神经网络·gnn
李@小白5 小时前
蓝桥杯数组分割
java·算法·蓝桥杯