每日一题2023.12.14|LeetCode3.无重复字符的最长子串

leetcode3.无重复字符的最长字串

连接:https://leetcode.cn/problems/longest-substring-without-repeating-characters/description/

滑动窗口

找出字符串中不含重复字符的最长子串,由于最长子串是连续的,所以可以利用滑动窗口来做。窗口内的字符都是连续的,只需计算窗口内满足要求的最长的子串。
不重复,可以利用哈希表记录字符出现的次数;或者集合存储不重复的字符。

哈希表hashtable

哈希表记录窗口内字符对应的次数
移动窗口的右边界,将右边界对应的字符加入哈希表,
如果该字符对应的次数大于1,就移动左边界,将左边界对应的字符的个数减1,直到右边界对应的字符个数为1

class Solution {
public:int lengthOfLongestSubstring(string s) {//哈希表mapunordered_map<char,int>ma;int l=0,ans=0;for(int r=0;r<s.size();++r){ma[s[r]]++;while(l<s.size()&&ma[s[r]]>1){ma[s[l]]--;l++;}ans=max(ans,r-l+1);}return ans;}
};
func lengthOfLongestSubstring(s string) int {ma:=make(map[uint8]int)l,r,ans:=0,0,0//l,r滑动窗口左右边界,ans记录答案for ;r<len(s);r++{ma[s[r]]++for ma[s[r]]>1{ma[s[l]]--l++}ans=max(ans,r-l+1)}return ans
}
func max(a,b int)int{if a>b{return a}else{return b}
}

集合set

用集合存储窗口内出现的字符
移动窗口右边界,右边界对应的字符如果没有出现在集合中就加入集合;如果右边界对应的字符出现在集合中,就移动左边界,如果左边界对应的字符与右边界对应的字符不相等,就将左边界对应的字符从集合中删除,如果左边界对应的字符与右边界对应的字符相等就只移动左边界不需删除[因为右边界对应的字符与左边界对应的字符一致但是并没有将右边界对应的字符加入集合]

class Solution {
public:int lengthOfLongestSubstring(string s) {//setunordered_set<char> se;int l=0,ans=0;for(int r=0;r<s.size();++r){if(!se.count(s[r])) se.insert(s[r]);else{while(l<s.size()&&s[l]!=s[r]){se.erase(s[l]);++l;}++l;}ans=max(ans,r-l+1);}return ans;}
};
func lengthOfLongestSubstring(s string) int {ma:=make(map[uint8]struct{})//无序set存储字符l,r,ans:=0,0,0//l,r滑动窗口左右边界,ans记录答案for ;r<len(s);r++{if _,ok:=ma[s[r]];!ok{ma[s[r]]=struct{}{}}else{for l<r&&r<len(s)&&s[l]!=s[r]{delete(ma,s[l])l++}l++}ans=max(ans,r-l+1)}return ans
}
func max(a,b int)int{if a>b{return a}else{return b}
}

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

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

相关文章

小区生活污水处理设备生产厂家讲解

小区生活污水处理设备生产厂家讲解 工艺流程讲解 1.进水井 进水井在处理系统中起到关键作用。它设置了溢流口和进水闸门&#xff0c;当来水量超过系统负荷或者系统发生故障时&#xff0c;可以关闭进水闸门&#xff0c;以防止污水直接进入河道或市政管网。这一步骤确保了系统的稳…

Windows下ping IP+端口的方法

有两种方法&#xff1a; 1. windows 开通 telnet 参考&#xff1a; https://zhuanlan.zhihu.com/p/570982111 2. 安装插件 参考&#xff1a;Windows下ping IP端口的方法 推荐使用第二种。

JVM-接口响应时间很长解决办法

问题 在程序运行过程中&#xff0c;发现有几个接口的响应时间特别长&#xff0c;需要快速定位到是哪一个方法的代码执行过程中出现了性能问题。 解决思路 已经确定是某个接口性能出现了问题&#xff0c;但是由于方法嵌套比较深&#xff0c;需要借助于算法定位到具体的方法。 A…

linux脚本中 #!/bin/sh、#!/bin/bash

我们通常看到的脚本文件总是有以下这样的开头&#xff1a; #!/bin/bash本文解释一下这是什么&#xff0c;以及为什么要写它。 首先解释一下 #! &#xff0c;因为 #!有个专有的名词&#xff0c;叫 shebang 发音类似中文的 “蛇棒” 。为什么叫 shebang 呢&#xff1f; 首先 #…

综合实验:期末

实验要求&#xff1a; 一&#xff0e;物理连接 实验分2个组进行&#xff0c;使用思科模拟软件。每个同学模拟两个组。每个组选用一台路由器、一台三层交换机和一台二层交换机。要求按下图拓扑进行连接。如下图&#xff1a;最上端设备为核心交换机&#xff0c;按老师要求配置&a…

C# WPF上位机开发(动态添加控件)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 写图形界面软件的时候&#xff0c;我们经常会遇到一种情况。那就是图形界面上面&#xff0c;显示的控件可能是不定的。有可能多&#xff0c;也有可…

量子计算对密码学的威胁及应对方式

PrimiHub一款由密码学专家团队打造的开源隐私计算平台&#xff0c;专注于分享数据安全、密码学、联邦学习、同态加密等隐私计算领域的技术和内容。 当量子计算机问世时&#xff0c;许多加密方式将慢慢失去效果。本文将阐述原因以及正在研究的后量子密码学&#xff0c;以帮助人们…

Unity | Shader基础知识(第五集:案例<小彩球>)

目录 一、本节介绍 1 上集回顾 2 本节介绍 二、原理分析 1 现实中出现彩色的原因 2 软件里的彩色的原理 3 方案 三、 实现数字由【-1,1】映射为【0,1】 1 结论 2 原理 四、代码实现 1 注意事项 2 详解结构体appdata_base 3 接收数据 4 映射数据 5 输出给SV_TAR…

天猫数据平台-淘宝天猫数据-天猫销售数据分析:11月天猫平台滑雪运动装备行业销量翻倍!

随着天气变冷、冬季来临&#xff0c;迎来了疫情后的首个滑雪季&#xff0c;加之自冬奥会结束以来&#xff0c;大众参与冰雪运动的热度持续攀升&#xff0c;因此&#xff0c;冰雪运动的需求正集中释放。 根据相关数据显示&#xff0c;11月以来&#xff0c;全国滑雪场门票预订量较…

阿里云人工智能平台PAI多篇论文入选EMNLP 2023

近期&#xff0c;阿里云人工智能平台PAI主导的多篇论文在EMNLP2023上入选。EMNLP是人工智能自然语言处理领域的顶级国际会议&#xff0c;聚焦于自然语言处理技术在各个应用场景的学术研究&#xff0c;尤其重视自然语言处理的实证研究。该会议曾推动了预训练语言模型、文本挖掘、…

Mac卸载nodejs

随着 JavaScript 的流行和 Web 开发的发展&#xff0c;Node.js 作为 JavaScript 的一种运行环境&#xff0c;也在技术领域中备受关注。然而&#xff0c;在使用 Node.js 开发项目时&#xff0c;有时候需要卸载 Node.js&#xff0c;这时候很多人可能会遇到问题。在 Mac 系统中&am…

在项目中,使用drawio创建一个共享协作看板

在项目中&#xff0c;使用drawio创建一个共享协作看板 drawio是一款强大的图表绘制软件&#xff0c;支持在线云端版本以及windows, macOS, linux安装版。 如果想在线直接使用&#xff0c;则直接输入网址draw.io或者使用drawon(桌案), drawon.cn内部完整的集成了drawio的所有功…

LSTM和GRU的介绍以及Pytorch源码解析

介绍一下LSTM模型的结构以及源码&#xff0c;用作自己复习的材料。 LSTM模型所对应的源码在&#xff1a;\PyTorch\Lib\site-packages\torch\nn\modules\RNN.py文件中。 上次上一篇文章介绍了RNN序列模型&#xff0c;但是RNN模型存在比较严重的梯度爆炸和梯度消失问题。 本文…

QT-CAD-3D显示操作工具

QT-CAD-3D显示操作工具 一、效果展示二、核心程序三、程序链接 一、效果展示 二、核心程序 TDF_LabelSequence DxfReader::transfer(DocumentPtr doc, TaskProgress* progress) {TDF_LabelSequence seqLabel;Handle_XCAFDoc_ShapeTool shapeTool doc->xcaf().shapeTool();…

大数据技术13:HBase分布式列式数据库

前言&#xff1a;2007年Powerset的工作人员&#xff0c;通过google的论文开发出了BigTable的java版本&#xff0c;即HBASE。2008年HBASE贡献给了Apache。HBase 需要依赖 JDK 环境。 一、Hadoop的局限 HBase 是一个构建在 Hadoop 文件系统之上的面向列的数据库管理系统。 要想…

微服务学习:Gateway服务网关

一&#xff0c;Gateway服务网关的作用&#xff1a; 路由请求&#xff1a;Gateway服务网关可以根据请求的URL或其他标识符将请求路由到特定的微服务。 负载均衡&#xff1a;Gateway服务网关可以通过负载均衡算法分配请求到多个实例中&#xff0c;从而平衡各个微服务的负载压力。…

爬虫的基本介绍 , 什么是爬虫 , 爬虫的主要功能

走进爬虫 1. 什么是爬虫&#xff1f; 本节课程的内容是介绍什么是爬虫&#xff1f;爬虫有什么用&#xff1f;以及爬虫是如何实现的&#xff1f;从这三点一起来寻找答案&#xff01; 1.1 初识网络爬虫 网络爬虫&#xff08;又被称为网页蜘蛛&#xff0c;网络机器人&#xff…

PythonStudio:一款国人写的python及窗口开发编辑IDE,可以替代pyqt designer等设计器了

本款软件只有十几兆&#xff0c;功能算是强大的&#xff0c;国人写的&#xff0c;很不错的python界面IDE.顶部有下载链接。下面有网盘下载链接&#xff0c;或者从官网直接下载。 目前产品免费&#xff0c;以后估计会有收费版本。主页链接&#xff1a;PythonStudio-硅量实验室 作…

yarn install或者 npm install 下载安装超时的解决办法

当我们在安装项目依赖时&#xff0c;经常会遇到安装超时的情况&#xff0c;这个时候一般会采取更换下载源来解决&#xff1a; 1.更换淘宝源&#xff1a; npm config set registry https://registry.npm.taobao.org yarn config set registry https://registry.npm.taobao.or…

阿里云Centos8安装Dockers详细过程

一、卸载旧版本 较旧的 Docker 版本称为 docker 或 docker-engine 。如果已安装这些程序&#xff0c;请卸载它们以及相关的依赖项。 yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \do…