牛客——字符串(尺取法与滑动窗口)

news2024/12/27 0:47:38

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
 

题目描述

小N现在有一个字符串S。他把这这个字符串的所有子串都挑了出来。一个S的子串T是合法的,当且仅当T中包含了所有的小写字母。小N希望知道所有的合法的S的子串中,长度最短是多少。

输入描述:

一行一个字符串S。只包含小写字母。S的长度不超过106.

输出描述:

一行一个数字,代表最短长度。数据保证存在一个合法的S的子串。

#include<bits/stdc++.h>
using namespace std;
int book[26]={0};
int check()
{
    for(int i=0;i<26;i++)
    {
        if(!book[i])
            return 0;
    }
    return 1;
}
int main()
{
    string s;
    cin>>s;
    int n=s.size();
    int ans=1e6+10;
    for(int l=0,r=0;r<n;r++)
    {
        book[s[r]-'a']++;
        while(check()){
            ans=min(ans,r-l+1);
            book[s[l++]-'a']--;
        }
        
    }
    cout<<ans;
    return 0;
}

涉及到字符串的子串长度问题,可以联想到尺取法。

尺取法是一种常用的解决某些问题的算法技巧。它使用两个指针来遍历数组或序列,并根据问题的要求来调整指针的位置,从而求解问题。

尺取法通常用于滑动窗口类型的问题,其中需要在数组或序列中找到满足某些条件的子数组或子序列。尺取法的基本思想是维护一个窗口,通过移动窗口的左右边界来寻找满足条件的子数组或子序列。

尺取法的步骤如下:

  1. 初始化左右指针的位置,通常为数组或序列的开头。
  2. 进入循环,循环条件为右指针小于数组或序列的长度:
    • 根据问题的要求,调整窗口的大小和位置,即移动左右指针。
    • 在每次移动指针后,根据问题的要求更新结果或进行其他操作。
  3. 循环结束后,得到满足条件的子数组或子序列以及相应的结果。

尺取法的优点是时间复杂度较低,通常为 O(n),其中 n 是数组或序列的长度。它适用于一些需要遍历数组或序列的问题,例如求解最长连续子数组的和等。

尺取法的具体实现因问题而异,需要根据具体的问题来调整左右指针的移动规则和条件判断。在应用尺取法时,需要注意边界条件和指针的移动规则,确保算法的正确性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1424835.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

喜讯| 触想智能荣获2023年度“技术创新·金品奖”!

触想智能又迎开年喜讯!1月25日&#xff0c;由数字标牌网联合视听网举办的2023年度数字标牌及视听行业年度荣誉评选名单重磅揭晓&#xff0c;触想智能扫码安卓工业平板一体机(TPC-A14)斩获2023年度技术创新金品奖&#xff0c;标志着触想智能品牌创新与技术实力再获专业权威机构认…

Backtrader 文档学习- Broker - Cheat-On-Open

Backtrader 文档学习- Broker - Cheat-On-Open 1.概述 V1.9.44.116增加了Cheat On Open的支持。对于全押的人来说&#xff0c;这似乎是一个必需的功能&#xff0c;用bar的收盘价后进行计算&#xff0c;希望与开盘价相匹配。 当开盘价差距&#xff08;上涨或下跌&#xff0c;取…

虚拟机(VMware)ubuntu16.04 直接连接网口设备 USRP 吊舱

编辑虚拟网络编辑器 点击之后 选择网卡之后&#xff0c;点击确定。 电脑配置 使用了&#xff1a;192.168.2.56 虚拟机内部配置 和PC的配置一致

全链跨链协议 Omnity|章鱼网络构建真正 100% 去中心化的跨链网络

2024年1月31日&#xff0c;章鱼网络正式发布全链跨链协议 Omnity 的 Lightpaper&#xff0c;支持比特币铭文、符文&#xff0c;以及以太坊、Layer2 和应用链的跨链互操作&#xff0c;计划于2024年4月发布。 Omnity Lightpaper&#xff1a; https://docs.google.com/document/d/…

人工智能网络安全挑战赛(AIxCC):超亿元大奖等你来拿!

2023年底&#xff0c;DARPA开启了一项前所未有的挑战——人工智能网络安全挑战赛&#xff08;AIxCC&#xff09;&#xff0c;旨在通过技术竞赛探索AI时代下网络安全的新格局。该赛事希望孕育出一种创新的网络安全通用人工智能&#xff08;AGI&#xff09;系统&#xff0c;该系统…

3款日本云服务器推荐,最低一款只需15.8元

当今的互联网时代&#xff0c;云服务器已经成为企业和个人进行业务部署和数据存储的重要工具。而在全球范围内&#xff0c;日本云服务器市场也越来越受到关注。今天&#xff0c;我们将为大家推荐3款日本云服务器&#xff0c;最低的一款仅需15.8元/月。 1.恒创科技 一家非常受…

两种相同的垂直工具栏标志以及为什么

可能你很少碰到这样的开发需求&#xff0c;所以本文属于”课外阅读”级别。 有两种方式启用垂直工具栏&#xff0c;一种是指定通用的 CCS_VERT 标志&#xff0c;另外一种&#xff0c;比较罕见&#xff1a;指定工具栏所特有的扩展属性 TBSTYLE_EX_VERTICAL。 问题来了&#xf…

智能小车案例:基于Raspberry Pi的自动巡航与避障系统

项目背景 随着物联网技术的不断发展&#xff0c;智能小车成为了现代生活和工业自动化中的重要工具。为了实现智能小车的自动巡航与避障功能&#xff0c;我们采用了Raspberry Pi作为主控制器&#xff0c;结合传感器和执行器&#xff0c;构建了一个完整的系统。 所需材料 Raspber…

关于source批量处理sql命令建立数据库后发现中文乱码问题解决方案(Mysql)

今天在使用souce建表的时候发现自己表结构中的中文出现了乱码问题&#xff0c;那么具体的解决方案如下&#xff1a; 首先我们先使用命令行连接自己的数据库 mysql -u root -p 12345 然后使用show variables like "char%"; 如果说你的这个里面不是utf-8那么就是出现了…

Acrel-1200分布式光伏运维平台屋顶光伏工商业屋顶光伏应用

上海安科瑞电气股份有限公司 胡冠楠 咨询家&#xff1a;“Acrelhgn”&#xff0c;了解更多产品资讯 行业现状 “十四五”期间&#xff0c;随着“双碳”目标提出及逐步落实&#xff0c;本就呈现出较好发展势头的分布式光伏发展有望大幅提速。就“十四五”光伏发展规划&#xf…

大脑模型认知实验报告(脑与认知期末考核)

实验名称&#xff1a;大脑模型认知实验 实验目的&#xff1a; &#xff08;1&#xff09;对大脑的三部分、七层结构、区域划分有一个清晰的认识。 &#xff08;2&#xff09;对脑的各个区域的基本功能以及脑的工作方式有所了解。 实验环境&#xff1a;大脑模具、配有详细标…

vue3 + vite:打包部署后,动态组件渲染404问题解决

问题描述: 当需要渲染动态组件,动态的组件路径配置在数据库中时,如下图,本地运行能正常访问,用vite打包部署后,生产上改路径为404. 起初认为是,vite打包后的文件都是.js, 当页面加载后从数据库拿来的路径是.vue, 并且是src/xxx/xxx.vue 这种绝对路径形式的,所以就找不…

《Pandas 简易速速上手小册》第3章:Pandas 数据清洗基础(2024 最新版)

文章目录 3.1 处理缺失数据3.1.1 基础知识3.1.2 重点案例&#xff1a;客户数据分析3.1.3 拓展案例一&#xff1a;医疗问卷数据处理3.1.4 拓展案例二&#xff1a;零售店库存清单 3.2 数据类型转换3.2.1 基础知识3.2.2 重点案例&#xff1a;商品销售数据分析3.2.3 拓展案例一&…

热仿真中稳态与瞬态的区别

对于热仿真&#xff0c;根据是否随时间变化&#xff0c;可分为稳态&#xff08;steady&#xff09;仿真和瞬态&#xff08;transient&#xff09;仿真两类。 从数学计算的角度&#xff0c;所谓稳态是指物理量不随时间变化的定常过程&#xff0c;即计算域中所有物理量均满足关系…

华章杂志华章杂志社华章编辑部2023年第11期目录

专题论文 强化人才队伍发展 推动法治唐山建设问题研究 (0003) 李彬 文化论坛《华章》投稿&#xff1a;cn7kantougao163.com 乡村振兴背景下非物质文化遗产传承与发展探究 ——以黔西南州传统蓝染文化为例 (0006) 董天丽;何华杰;韦永吉;王芳琳 思政课视角下高职学生保护和继…

Git系列---远程操作

&#x1f4d9; 作者简介 &#xff1a;RO-BERRY &#x1f4d7; 学习方向&#xff1a;致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f4d2; 日后方向 : 偏向于CPP开发以及大数据方向&#xff0c;欢迎各位关注&#xff0c;谢谢各位的支持 引用 1.理解分布式版本控制…

第九篇【传奇开心果系列】Python的OpenCV技术点案例示例:目标跟踪

传奇开心果短博文系列 系列短博文目录Python的OpenCV技术点案例示例系列 短博文目录前言二、常用的目标跟踪功能、高级功能和增强跟踪技术介绍三、常用的目标跟踪功能示例代码四、OpenCV高级功能示例代码五、OpenCV跟踪目标增强技术示例代码六、归纳总结 系列短博文目录 Pytho…

绝地求生:地铁逃生模式从哪里进入游戏模式的讲解

地铁逃生模式是绝地求生&#xff08;PUBG&#xff09;中的一种游戏模式&#xff0c;玩家需要在地铁车厢中寻找武器并战胜其他玩家。如果你还不知道在哪里进入地铁逃生模式&#xff0c;本文闲游盒将为您进行详细的讲解。 进入地铁逃生模式的步骤&#xff1a; 打开绝地求生游戏客…

C++关键词auto详解

顾得泉&#xff1a;个人主页 个人专栏&#xff1a;《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂&#xff0c;年薪百万&#xff01; 一、小思考 随着我们对于C的不断学习&#xff0c;遇到的程序越来越复杂&#xff0c;程序中用到的类型也越来越复杂…

麒麟V10 mate-indicator进程占用内存过高问题

给客户新划的5台虚拟机&#xff0c;操作系统是麒麟V10&#xff0c;用户反映什么软件都没装系统内存占用就达到80%。 百度了一下是麒麟的bug&#xff0c;内存泄漏。官方分析报告。 解决方法&#xff1a;下载相应rpm包并安装即可解决。 1.确定麒麟版本 cat /etc/*release Ter…