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

这道题咱首先用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 分钟前
C++ | 继承
c语言·开发语言·数据结构·c++·算法
华如锦3 分钟前
MongoDB作为小型 AI智能化系统的数据库
java·前端·人工智能·算法
机器学习之心HML4 分钟前
GSABO(通常指混合了模拟退火SA和天牛须搜索BAS的改进算法)与BP神经网络结合,用于爆破参数优选
人工智能·神经网络·算法·爆破参数优选
轻微的风格艾丝凡5 分钟前
数织求解脚本技术文档
算法·matlab
你怎么知道我是队长6 分钟前
C语言---强制类型转换
c语言·开发语言·算法
_OP_CHEN6 分钟前
【算法基础篇】(四十六)同余方程终极攻略:从基础转化到实战破解
c++·算法·蓝桥杯·数论·同余方程·扩展欧几里得算法·acm/icpc
程序员泡椒2 小时前
二分查找Go版本实现
数据结构·c++·算法·leetcode·go·二分
小雨下雨的雨2 小时前
Flutter鸿蒙共赢——墨染算法:柏林噪声与鸿蒙生态中的数字水墨意境
算法·flutter·华为·交互·harmonyos·鸿蒙
NAGNIP8 小时前
万字长文!回归模型最全讲解!
算法·面试
知乎的哥廷根数学学派8 小时前
面向可信机械故障诊断的自适应置信度惩罚深度校准算法(Pytorch)
人工智能·pytorch·python·深度学习·算法·机器学习·矩阵