算法---滑动窗口练习-4(无重复字符的最长子串)

无重复字符的最长子串

  • 1. 题目解析
  • 2. 讲解算法原理
  • 3. 编写代码

1. 题目解析

题目地址:点这里

在这里插入图片描述

2. 讲解算法原理

在这里插入图片描述

在这里插入图片描述

算法的主要思想是使用滑动窗口来维护一个不含重复字符的子串。定义两个指针 left 和 right 分别表示窗口的左边界和右边界。还定义了一个数组 hash 来记录字符的出现次数。

算法的流程如下:

  1. 初始化 left、right、len 为0,字符串 s 的长度为 n。同时初始化一个大小为128的数组 hash,用于记录字符的出现次数,初始值都为0。
  2. 当 right 小于 n 时,执行以下步骤:
  • 将 hash[s[right]] 的值加1,表示当前字符进入窗口。
  • 当 hash[s[right]] 的值大于1时,表示当前字符在窗口内已经出现过,需要调整窗口的左边界。
    • 将 hash[s[left]] 的值减1,表示左边界字符移出窗口。
    • 将 left 右移一位。
  • 计算当前窗口的长度 right - left + 1,并将其与 len 中的最大值进行比较,更新 len。
  • 将 right 右移一位。
  1. 如果字符串 s 的长度为1,直接返回1,因为只有一个字符。
  2. 返回 len,即为最长的无重复字符子串的长度。

总体来说,这个算法利用滑动窗口的思想,在遍历字符串的过程中不断调整窗口的大小,以求得最长的无重复字符子串的长度。


3. 编写代码

class Solution {
public:int lengthOfLongestSubstring(string s) {int left=0,right=0,len=0;int n=s.size();int hash[128]={0};while(right<n){hash[s[right]]++;while(hash[s[right]]>1){hash[s[left]]--;//出窗口left++;}len=max(len,right-left+1);//更新结果right++;}if(n==1)return 1;return len;}
};

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

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

相关文章

华为认证云计算专家(HCIE-Cloud Computing)–单选题

华为认证云计算专家&#xff08;HCIE-Cloud Computing&#xff09;–单选题 13.( 单选)WAF服务属于以下哪个安全子领域() A 应用安全 B 数据安全 C 主机安全 D 安全管理 E 网络安全 正确答案&#xff1a;A 24 (单选题)以下关于非容灾&#xff0c;Global与Region融合部署场景&…

redis配置文件详情

redis自带两个conf配置文件&#xff0c;redis.conf为redis配置文件&#xff0c;sentinel.conf为哨兵配置文件。 注意&#xff1a;修改配置文件需要重启生效。 一、redis.conf为redis的配置文件 # redis进程是否以守护进程的方式运行&#xff0c;yes为是&#xff0c;no为否(不…

Apache Paimon 的 CDC Ingestion 概述

CDC Ingestion 1&#xff09;概述 Paimon支持schema evolution将数据插入到Paimon表中&#xff0c;添加的列将实时同步到Paimon表&#xff0c;并且无需重启同步作业。 目前支持的同步方式如下&#xff1a; MySQL Synchronizing Table: 将MySQL中的一个或多个表同步到一个Pa…

【算法与数据结构】深入解析二叉树(一)

文章目录 &#x1f4dd;数概念及结构&#x1f320; 树的概念&#x1f309;树的表示&#x1f320; 树在实际中的运用&#xff08;表示文件系统的目录树结构&#xff09; &#x1f309;二叉树概念及结构&#x1f320;概念&#x1f309;数据结构中的二叉树&#x1f320;特殊的二叉…

Spring web MVC(2)

1、RequestMapping称为路由映射&#xff08;既是类注解也是方法注解提供访问路径&#xff09; 2、RequestParam起到重命名的作用&#xff0c;也起到绑定的作用&#xff0c;传递集合list时会用到&#xff0c;多个值绑定给list&#xff0c;默认是必传参数如果不传参数需要设置re…

如何在Windows 10上打开和关闭平板模式?这里提供详细步骤

前言 默认情况下&#xff0c;当你将可翻转PC重新配置为平板模式时&#xff0c;Windows 10会自动切换到平板模式。如果你希望手动打开或关闭平板模式&#xff0c;有几种方法可以实现。​ 自动平板模式在Windows 10上如何工作 如果你使用的是二合一可翻转笔记本电脑&#xff0…

Spring, SpringBoot, SpringCloud,微服务

1,SSM (Spring+SpringMVC+MyBatis) SSM框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容),常作为数据源较简单的web项目的框架。 Spring MVC 是 Spring 提供的一个基于 MVC 设计模式的轻量级 Web 开发框架,本质上相当于 Servlet,Controlle…

vue 基于elementUI/antd-vue, h函数实现message中嵌套链接跳转到指定路由 (h函数点击事件的写法)

效果如图&#xff1a; 点击message 组件中的 工单管理&#xff0c; 跳转到工单管理页面。 以下是基于vue3 antd-vue 代码如下&#xff1a; import { message } from ant-design-vue; import { h, reactive, ref, watch } from vue; import { useRouter } from vue-router; c…

PY32离线烧录器功能介绍,可批量烧录,支持PY32系列多款单片机

PY32离线烧录器可以对PY系列单片机进行批量烧录&#xff0c;现支持PY32F002A/002B/002/003/030/071/072/040/403/303芯片各封装和XL2409&#xff0c;XL32F001/003等芯片。PY32离线烧录器需要搭配上位机软件才能使用&#xff0c;上位机软件在我们官网&#xff08;www.xinlinggo.…

代码随想录刷题第60天

最后一题了。最后一题是柱状图中最大的矩形https://leetcode.cn/problems/largest-rectangle-in-histogram/&#xff0c;和接雨水遥相呼应的一道题&#xff0c;我们需要找到当前遍历数字左右两边第一个小于当前数字的值&#xff0c;通过保证单调栈中数字为递减顺序&#xff0c;…

Hive集合函数 collect_set 和 collect_list 使用示例

Hive集合函数 collect_set 和 collect_list 使用示例 在Hive中&#xff0c; collect_set 和 collect_list 是用于收集数据并将其存储为集合的聚合 函数。以下是它们的语法&#xff1a; 1. collect_set(expression)- expression : 要收集的数据表达式。collect_set 函数用于将…

【软考】UML中的图之对象图

目录 1. 说明2. 图示3. 特性 1. 说明 1.对象图即object diagram2.展现了某一时刻一组对象以及它们之间的关系3.描述了在类图中所建立的事物的实例的静态快照4.对象图一般包括对象和链5.对象图展示的是对象之间关系&#xff0c;不存在交互&#xff0c;所以不是交互图 2. 图示 …

#微信小程序(一个emo文案界面)

1.IDE&#xff1a;微信开发者工具 2.实验&#xff1a;一个emo文案界面 &#xff08;1&#xff09;最好使用rpx &#xff08;2&#xff09;图片宽度占不满&#xff0c;在CSS中设置width为100% &#xff08;3&#xff09;imag图片全部为网页链接图片 3.记录 4.代码 index.htm…

【基础计算机网络2】物理层——物理层设备

【前言回顾】 【考纲内容】 物理层设备&#xff1a;中继器&#xff1b;集线器 一、物理层设备 1.1 中继器 描述&#xff1a;中继器是用来扩大网络规模的最简单廉价的互连设备&#xff0c;中继器两端的网络部分是网段&#xff0c;而不是子网。使用中继器连接的几个网段仍是一…

Jmeter+ant,ant安装与配置

1.ant含义 ant&#xff1a;Ant翻译过来是蚂蚁的意思&#xff0c;在我们做接口测试的时候&#xff0c;是可以用来做JMeter接口测试生成测试报告的工具 2.ant下载 下载地址&#xff1a;Apache Ant - Ant Manual Distributions download中选择ant 下载安装最新版zip文件 3.…

阿里云国际放行DDoS高防回源IP

如果源站服务器上设置了IP白名单访问控制&#xff08;如安全软件、安全组&#xff09;&#xff0c;由于设置了DDoS高防后&#xff0c;回源IP是高防回源IP段&#xff0c;您需要将DDoS高防的回源IP段的地址加入安全软件和安全组的白名单中&#xff0c;避免DDoS高防的回源流量被误…

导入fetch_california_housing 加州房价数据集报错解决(HTTPError: HTTP Error 403: Forbidden)

报错 HTTPError Traceback (most recent call last) Cell In[3], line 52 from sklearn.datasets import fetch_california_housing3 from sklearn.model_selection import train_test_split ----> 5 X, Y fetch_california_housing(retu…

Javascript编译原理简介

一. 传统编译语言编译原理 这一节主要简单了解下①传统编译语言的编译流程/Javascript涉及的角色和流程&#xff0c;与变量声明并赋值时所涉及到的②LHS查询和③RHS查询。 Javascript引擎进行编译的步骤和传统的编译语言非常相似&#xff0c;在某些环节可能比预想的要复杂。在…

acados_TypeError: __init__() got an unexpected keyword argument ‘winmode‘

TypeError: init() got an unexpected keyword argument ‘winmode’ 1. TypeError: init() got an unexpected keyword argument ‘winmode’ python vehicle_move_ocp.py执行完成以后,Traceback (most recent call last): File “vehicle_move_ocp.py”, line 172, in ac…

在虚拟环境中配置0.4.1版本的pytorch

家人们&#xff0c;使用下面方法安装pytorch的时候一定要记得关掉外网&#xff01;&#xff01;&#xff01; 我下午浪费了几个小时安不上&#xff0c;就是因为没有关掉外网&#xff01; QAQ 安装方法链接