leetcode(滑动窗口)3.无重复字符的最长字串(C++详细题解)DAY2

文章目录

  • 1.题目
    • 示例
    • 提示
  • 2.解答思路
  • 3.实现代码
    • 结果
  • 4.总结

1.题目

给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。

示例

示例 1:
输入: s = “abcabcbb”
输出: 3
解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。

示例 2:
输入: s = “bbbbb”
输出: 1
解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。

示例 3:
输入: s = “pwwkew”
输出: 3
解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。

请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。

提示

  • 0 <= s.length <= 5 * (10^4)
  • s 由英文字母、数字、符号和空格组成

2.解答思路

滑动窗口:

  • 滑动窗口主要应用在数组和字符串上。
  • 遍历一个序列时,可以类比成队列(只能队尾进队,对头出队),一个队头指针left,一个队尾指针right

针对本题分析

1.队头指针left,先固定,向右移动队尾指针right,直至出现重复的字符,计录下此时队列长度。
2.对头指针left向后移动直至没有重复字符出现,再插入此时的队尾指针right所指字符。
3.比较记录下的队列长度的最大值,就是无重复字符的最长字串长度。

代码所需知识汇总

关于字符串string s:
s.size();//返回字符串长度
s[i] //调用下标为 i 的字符
更多字符串的成员函数见文章:C++字符串的常用操作函数全总结

关于集合:
头文件#include <unordered_set>
unordered_set < char > str; // 定义一个char类型的无序集合
str.insert(s[i]); //在集合中插入s[i]
str.find(s[i]); //在集合中查找s[i]字符,若存在会返回相应下标,若不存在会返回str.end()
str.end(); //表示集合的最后一个元素的后面
str.erase(s[i]); //删除s[i]所对应字符的下标对应字符

3.实现代码

class Solution
{
public:int lengthOfLongestSubstring(string s){int n = s.size();if (n == 0 || n == 1)return n;unordered_set<char> str; // 无序集合int maxLength = 0;       // 记录最大值int count = 0;           // 记录每次的子串长度// i是队头下标,j是队尾下标for (int i = 0, j = 0; j < n; j++){// 在队列找到了对应字符               while (str.find(s[j]) != str.end()){// 需要队头指针向后移直至队尾元素在子串中没有重复的字符str.erase(s[i]);//删除对头下标对应字符i++;//对头后移一位count--;//子串字符长度减少一位}str.insert(s[j]);//将队尾所指字符插入子串strcount++;if (count > maxLength)maxLength = count;}return maxLength;    }
};

结果

在这里插入图片描述
2024.2.5优化部分代码后,运行时间降低
在这里插入图片描述

4.总结

今天这题做了好长时间,cpu快烧干了,整个人都不好了。

知识储备还得多补充。。。

明天继续加油吧。

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

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

相关文章

XGB-3: 模型IO

在XGBoost 1.0.0中&#xff0c;引入了对使用JSON保存/加载XGBoost模型和相关超参数的支持&#xff0c;旨在用一个可以轻松重用的开放格式取代旧的二进制内部格式。后来在XGBoost 1.6.0中&#xff0c;还添加了对通用二进制JSON的额外支持&#xff0c;作为更高效的模型IO的优化。…

lua只读表

参考《programming in lua》13.4.5中&#xff0c;详细介绍了只读表的用法。建立一个函数&#xff0c;传入一个table&#xff0c;传出一个代理table&#xff0c;其__index指向传入的table&#xff0c;__newIndex直接报error即可&#xff1a; --输入一个table&#xff0c;输出一…

蓝桥杯(Web大学组)2023十四届省赛真题3:收集帛书碎片

需要实现&#xff1a; 1.将二维数组转为一维数组&#xff1b; 2.数组去重 一、将二维数组转为一维数组&#xff1a; 二、数组去重&#xff1a; function collectPuzzle(...puzzles) {// console.log(puzzles);// console.log(...puzzles);// TODO:在这里写入具体的实现逻辑/…

monaco-editor布局篇(一)-自适应大小

编辑器的宽高怎么进行自适应&#xff1f; 在create编辑时&#xff0c;通过配置 automaticLayout 实现编辑器大小自适应&#xff1a; monaco.editor.create(editorRef.value, {value: ,language: "javascript",fixedOverflowWidgets: true,fontFamily: "Arial&q…

可控概率抽奖算法

说明 本文PHP语言去实现&#xff0c;只实现核心可控概率引擎&#xff0c;库存判断等其它业务需要其它代码配合实现。 代码 /*** function 封装可控概率的抽奖功能* param $arr array 数据集合* param $weight_key string 权重字段* return array 被选…

colavoidance4

共有四个Matlab文件&#xff0c;main.m、AirCraft.m、Arena.m和mission_planner.m main.m 主文件比较简短&#xff0c;主要是模拟和控制无人机的飞行路径。 首先是一些初始定义和设置&#xff1a; num_of_UAVs 4: 定义无人机的数量为4。time 1300: 定义总时间为1300秒。s…

【算法分析与设计】无重复的最长子串

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;算法分析与设计 ⛺️稳中求进&#xff0c;晒太阳 题目 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。 示例 示例 1: 输入: s "abcabcbb" 输…

九州金榜|如何做好家庭教育

孩子的家庭教育是每个家庭都要做的&#xff0c;也是每个家长面临的事情&#xff0c;同样不同的家庭教育教育出来的孩子性格也各不相同&#xff0c;有时候家长看别别人家的孩子品学兼优非常羡慕&#xff0c;很多家长会把问题归结到孩子身上&#xff0c;其实有没有想过是家庭教育…

机器学习算法与Python实战 | 2024年吴恩达预测:关于AI,这些事未来十年不会变

本文来源公众号“机器学习算法与Python实战”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;2024年吴恩达预测&#xff1a;关于AI&#xff0c;这些事未来十年不会变 2024年&#xff0c;AI的发展会有怎样的改变&#xff1f; 在吴…

CSDN文章导出工具

源码地址&#xff1a; github:https://github.com/lishuangquan1987/CSDNExportergitee:https://gitee.com/lishuangquan1987/csdnexporter 介绍 最近有CSDN博客导出来的需求&#xff0c;翻看了很多开源工具&#xff0c;都不能用或者不好用&#xff0c;于是决定自己做一个。…

docker swarm

1.准备三台机器&#xff0c;分别安装docker,例如IP分别为&#xff1a; 192.168.88.131&#xff0c;192.168.88.136&#xff0c;192.168.88.138 2.修改/etc/hostname 分别为&#xff1a; manger,node1,node2 3.分别修改/etc/hosts添加: 192.168.88.131 manger 192.168.88.13…

支持534种语言,开源大语言模型MaLA-500

无论是开源的LLaMA 2还是闭源的GPT系列模型&#xff0c;功能虽然很强大&#xff0c;但对语言的支持和扩展比较差&#xff0c;例如&#xff0c;二者都是以英语为主的大模型。 为了提升大模型语言的多元化&#xff0c;慕尼黑大学、赫尔辛基大学等研究人员联合开源了&#xff0c;…

香港优才VS高才计划对比哪个好?详解申请条件、优缺点、续签转永居!

香港优才和高才计划对比哪个好&#xff1f;详解申请条件、优缺点、续签转永居&#xff01; 香港优才计划和香港高才通计划&#xff0c;都是热门的香港人才引进项目&#xff0c;在2023年&#xff0c;这两个项目为香港引进了超6万的优秀人才和高端人才&#xff0c;为香港经济发展…

CSRF:跨站请求伪造攻击

目录 什么是CSRF&#xff1f; DVWA中的CSRF low medium hight impossible 防御CSRF 1、验证码 2、referer校验 3、cookie的Samesite属性 4、Anti-CSRF-Token 什么是CSRF&#xff1f; CSRF全称为跨站请求伪造&#xff08;Cross-site request forgery&#xff09;&…

【Linux】静态库和动态库

动静态库 一、静态库1. 静态库概念2. 制作静态库&#xff08;1&#xff09;朴素方法 --- 不打包&#xff08;2&#xff09;对静态库打包 3. 使用静态库&#xff08;1&#xff09;朴素方法 --- 直接使用&#xff08;2&#xff09;使用打包好的静态库 二、动态库1. 动态库概念2. …

傅里叶变换在图像处理中的应用

傅里叶变换在图像处理中有着广泛的应用&#xff0c;因为它能将图像从空间域转换到频率域&#xff0c;使我们能够分析图像中的频率成分。以下是一些傅里叶变换在图像处理中的典型应用&#xff1a; 图像压缩&#xff1a;通过傅里叶变换&#xff0c;我们可以识别并去除图像数据中不…

jenkins 发布远程服务器并部署项目

安装参考另一个文章 配置maven 和 jdk 和 git 注意jdk的安装目录&#xff0c;是jenkins 安装所在服务器的jdk目录 注意maven的目录 是jenkins 安装所在服务器的maven目录 注意git的目录 是jenkins 安装所在服务器的 git 目录 安装 Publish Over SSH 插件 配置远程服务器 创…

不会Git也能玩Github吗?

不会Git也能玩Github吗&#xff1f; 前言使用Github的准备步骤使用一种访问外网资源的方法&#xff08;这一步才是新手最难的一步&#xff09;注册账号 创建一个自己的仓库创建完仓库后的界面 搜索你想要的代码类型以搜索坦克大战为例以下载烟花代码为例 总结 前言 说到Github&…

计算机自顶向下 Wireshark labs——DNS

如本文第2.4节所述&#xff0c;域名系统(DNS)将主机名转换为IP地址&#xff0c;在互联网基础设施中发挥着关键作用。在本实验中&#xff0c;我们将仔细研究DNS的客户端。回想一下&#xff0c;客户端在DNS中的角色相对简单—客户端向其本地DNS服务器发送查询&#xff0c;并收到响…

2023年06月CCF-GESP编程能力等级认证Python编程四级真题解析

Python等级认证GESP(1~6级)全部真题・点这里 一、单选题(共15题,共30分) 第1题 高级语言编写的程序需要经过以下( )操作,可以生成在计算机上运行的可执行代码。 A:编辑 B:保存 C:调试 D:编译 答案:D 第2题 排序算法是稳定的(Stable Sorting),就是指排序算…