力扣3. 无重复字符的最长子串(滑动窗口)

Problem: 3. 无重复字符的最长子串

文章目录

  • 题目描述
  • 思路及解法
  • 复杂度
  • Code

题目描述

在这里插入图片描述在这里插入图片描述

思路及解法

由于题目要求求出字符串中最长的连续无重复字符的最长子串,所以利用这个特性我们可以比较容易的想到利用双指针中的滑动窗口技巧来解决,但在实际的求解中我们可以利用其它的一些数据结构的特性来帮助实现窗口的滑动,在本体中就利用set集合不能有重复的特性来实现:

1.形成窗口:定义指向字符串s中字符下标为0的“指针”q与p(形成窗口),定义int类性变量maxLen用于记录最长的连续子串,定义std::unordered_set set来用于接下来辅助动态维护窗口
2.动态维护窗口:

2.1若当前字符不存在set中则将其添加到set中并且让q++;并判断当前“q - p > maxLen”是否成立;成立则更新maxLen的值
2.2若
当前字符存在于set中,则set除去p所指向的字符(set.erase(s.at§));并入p++;

复杂度

时间复杂度:

O ( n ) O(n) O(n);其中 n n n为字符串 s s s的长度

空间复杂度:

O ( n ) O(n) O(n)

Code

class Solution {
public:/*** Two Pointer* @param s Given string* @return int*/int lengthOfLongestSubstring(string s) {int n = s.length();if (n == 0) {return 0;}int p = 0;int q = 0;unordered_set<char> set;int maxLen = 0;while (q < n) {char c = s.at(q);if (set.find(c) == set.end()) {set.insert(c);q++;if (q - p > maxLen) {maxLen = q - p;}continue;}while (set.find(c) != set.end()) {set.erase(s.at(p));p++;}}return maxLen;}
};

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

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

相关文章

C语言——指针进阶(四)

目录 一.前言 二.指针和数组笔试题解析 2.1 二维数组 2.2 指针笔试题 三.全部代码 四.结语 一.前言 本文我们将迎来指针的结尾&#xff0c;包含了二维数组与指针的试题解析。码字不易&#xff0c;希望大家多多支持我呀&#xff01;&#xff08;三连&#xff0b;关注&…

智能电话机器人好不好

随着人工智能的出现&#xff0c;越来越多的智能电话机器人出现在我们的日常生活中&#xff0c;很多的电话营销公司的老板们非常看重这款产品&#xff0c;都希望通过第一次电话审查将公司电话营销人员的精力和时间投入到更准确的客户身上。那么智能电话机器人好不好电销机器人有…

【论文阅读】Vlogger: Make Your Dream A Vlog

Vlogger&#xff1a;把你的梦想变成Vlog paper&#xff1a;https://arxiv.org/abs/2401.09414 code&#xff1a;https://github.com/zhuangshaobin/vlogger 看起来挺有意思的&#xff0c;有空读一下 本文提出Vlogger&#xff0c;一种用于生成用户描述的分钟级视频博客(即vlo…

Python实现时间序列分析自回归模型(AutoReg算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 时间序列分析中的自回归模型&#xff08;AutoRegressive Model&#xff0c;简称AR模型&#xff09;是一…

Intel Processor Trace(三)

文章目录 前言一、Packet Relationships and Ordering1.1 Packet Blocks 二、Packet Definitions2.1 Taken/Not-taken (TNT) Packet2.2 Target IP (TIP) Packet2.2.1 IP Compression2.2.2 Indirect Transfer Compression for Returns (RET) 2.3 Deferred TIPs2.4 Packet Genera…

拼接url - 华为OD统一考试

OD统一考试 分值&#xff1a; 100分 题解&#xff1a; Java / Python / C 题目描述 给定一个 url 前缀和 url 后缀, 通过 “,” 分割&#xff0c; 需要将其连接为一个完整的 url 。 如果前缀结尾和后缀开头都没有 /&#xff0c;需要自动补上 / 连接符&#xff1b; 如果前缀结…

单调栈最后一天

目录 84.柱状图中最大的矩形 看到题目时的第一想法 看到代码随想录的想法 实现时出现的困难 84.柱状图中最大的矩形 力扣题目链接(opens new window) 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求 在该…

XML详细介绍

文章目录 一、XML二、XML基本语法三、XML常见问题四、XML和HTML有什么区别和优缺点五、热门文章 一、XML XML&#xff08;可扩展标记语言&#xff09;是一种标记语言&#xff0c;用于描述数据的结构和含义。它被设计用来存储和传输数据&#xff0c;并可以用于创建自定义的标记…

03 Verilog HDL 语法

Verilog HDL&#xff08;Hardware Description Language&#xff09;是在 C 语言的基础上发展起来的一种硬件描述语言&#xff08;用它可以表示逻辑电路图、逻辑表达式、数字逻辑系统所完成的逻辑功能等&#xff09;具有灵活性高、易学易用等特点。Verilog HDL 可以在较短的时间…

【DeepLearning-10】yolo.py文件关键代码parse_model(d, ch)函数

这段代码功能是根据提供的配置字典&#xff08;d&#xff09;和输入通道列表&#xff08;ch&#xff09;来解析并构建一个YOLOv5模型。函数的核心工作是遍历模型的每一层&#xff0c;并根据配置创建相应的神经网络层。 我们可以在函数中为新增模块配置构造参数设置。 函数中 f…

响应式Web开发项目教程(HTML5+CSS3+Bootstrap)第2版 例5-3 getBoundingClientRect()

代码 <!doctype html> <html> <head> <meta charset"utf-8"> <title>getBoundingClientRect()</title> </head> <script>function getRect(){var obj document.getElementById(example); //获取元素对象var objR…

【数据结构1-3】集合

有时候&#xff0c;我们并不关心数据之间的前后关系&#xff0c;也不关心数据的层次关系。一些确定元素只是单纯的聚集在一起&#xff0c;这样的元素聚集体被称为集合。 当希望知道某个数据是否存在一个集合中&#xff0c;或者两个元素是否在同一个集合中时&#xff0c;就需要使…

IP关联是什么?有什么后果?如何防止电商账号因IP关联被封?

在跨境电商的世界里&#xff0c;IP关联给多账号运营的商家带来了挑战。比如&#xff0c;亚马逊IP关联规则的执行对于那些经营多个店铺的卖家来说可能是一个不小的障碍。IP关联的影响不只是限于亚马逊&#xff0c;其他平台如Instagram、Facebook也有类似的机制&#xff0c;在之前…

web架构师编辑器内容-添加自动保存的功能

对于频繁改动的应用&#xff0c;自动保存的功能是一个非常有用的功能&#xff0c;可以避免用户在没有保存的情况下丢失自己保存过的数据。 对于自动保存&#xff0c;一般有两种实现&#xff0c;参考语雀和石墨&#xff1a; 语雀采用的是定时保存的方式&#xff0c;大约在3分半…

PHP语法

#本来是在学命令执行&#xff0c;所以学了学&#xff0c;后来发现&#xff0c;PHP语法和命令执行的关系好像没有那么大&#xff0c;不如直接学php的一些命令执行函数了。# #但是还是更一下&#xff0c;毕竟还是很多地方都要求掌握php作为脚本语言&#xff0c;所以就学了前面的…

HR:年底了如何分钱,比亏钱更可怕的是“亏”员工

年底了&#xff0c;很多企业家朋友在聊一个话题&#xff1a;如何分钱&#xff0c;激励员工创造更大的价值&#xff1f;分钱很重要&#xff0c;但分钱也特别难。 钱分对了&#xff0c;管理的一大半问题就解决了。钱分得不对&#xff0c;一大堆新的问题就出现了。最坏的结果&…

514.自由之路

一个字符串 ring ,表示刻在外环上的编码;给定另一个字符串 key ,表示需要拼写的关键词。您需要算出能够拼写关键词中所有字符的最少步数。 最初,ring 的第一个字符与 12:00 方向对齐。您需要顺时针或逆时针旋转 ring 以使 key 的一个字符在 12:00 方向对齐,然后按下中心按…

docker真的好难用啊,为什么说它移植性好啊?

对于首次接触 Docker 新人来说&#xff0c;Docker 确实存在一定的门槛&#xff0c;主要可能需要适应的几个点如下&#xff1a; 1、 概念理解&#xff1a; Docker 自身引入了很多新概念&#xff0c;比如镜像&#xff08;Image&#xff09;、容器&#xff08;Container&#xff…

HTML新手教程

HTML入门 教程&#xff1a;【狂神说Java】HTML5完整教学通俗易懂_哔哩哔哩_bilibili 一.初识HTML HyperTextMarkupLanguage&#xff08;超文本标记语言&#xff09; 超文本包括&#xff1a;文字、图片、音频、视频、动画。 HTML5的优势 世界知名浏览器厂商对HTML5的支持市场的…

无人值守变电所运维在海南市某住宅区的应用

1 前言 随着国家电网改革政策的逐步推进和落实&#xff0c;AcrelCloud-1000变电所运维云平台运用互联网和大数据技术&#xff0c;为电力运维公司提供变电所运维云平台。该平台作为连接运维单位和用电企业的纽带&#xff0c;监视用户配电系统的运行状态和电量数据&#xff0c;为…