当前位置: 首页 > news >正文

LeetCode hot100-8

题目描述

题目链接:无重复字符的最长子串

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

示例 1:

输入: s = "abcabcbb"

输出: 3

解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。

示例 2:

输入: s = "bbbbb"

输出: 1

解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。

示例 3:

输入: s = "pwwkew"

输出: 3

解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。   请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。

提示:

  • 0 <= s.length <= 5 * 104
  • s 由英文字母、数字、符号和空格组成

思路解析

        本题被划分到滑动窗口中,所以我主要讲解的是滑动窗口的思路,本题还有用数组下标记录出现重复位置的方法,代码与注释附在后面了, 感兴趣的话也可以看看

        首先定义一个左端点l与一个右端点r,当作滑动窗口的左右端点,并定义一个ans用于记录最长子串,我们每次将右端点向右移动一位,利用一个字符串str来记录当时滑动窗口中的子串,并用find函数判断新加入的元素是否已经存在于当前子串中,如果存在,更新ans并清空子串,左端点右移重复操作;如果不存在继续向窗口中添加新元素。

        注意:当最长子串的右端点为s最后一个元素时最长子串还存于str中,没有用来更新ans,所以在返回时需要返回的是str长度与ans之间的较大值。

代码实现

//滑动窗口
class Solution {
public:int lengthOfLongestSubstring(string s) {if(s.size()==0)return 0;int l=0,r=0,ans=1;//滑动窗口为s[l]~s[r]string str="";//记录当前窗口子串while(r<s.size()){if(str.find(s[r])!=-1){//判断是否有重复值ans=max((int)str.size(),ans);//更新ansr=l=l+1;//移动窗口左端点str="";//清空子串}else str+=s[r++];//继续遍历s加长字串}//当最长子串的右端点为s最后一个元素时最长子串还存于str中,没有用来更新ansreturn max((int)str.size(),ans);}
};
//判断重复值
class Solution {
public:int lengthOfLongestSubstring(string s) {vector<int>str(128,-1);//该数组用来记录每个字符上一次出现的位置int len=0,start=0;//len记录最大子串长度,start记录无重复字符子串的开始位置for(int end=0;end<s.size();end++){if(str[s[end]]!=-1){start=max(start,str[s[end]]+1);//如果出现重复字符更新start}str[s[end]]=end;//更新当前字符的位置len=max(len,end-start+1);//当len小于当前子串长度更新len}return len;}
};
http://www.xdnf.cn/news/728965.html

相关文章:

  • 学习路之PHP--easyswoole_panel安装使用
  • CQF预备知识:Python相关库 -- NumPy 基础知识 - 线性代数 numpy.linalg
  • 51. N-Queens
  • 【学习笔记】深度学习-梯度概念
  • leetcode669.修剪二叉搜索树:递归法利用有序性精准剪枝
  • 三格电子——RS232/485/422转光纤的应用
  • Ubuntu 18.04 上源码安装 protobuf 3.7.0
  • 代购企业如何解决选品管理问题?
  • 历年上海交通大学计算机保研上机真题
  • Hive数据倾斜问题深度解析与实战优化指南
  • 宇树机器狗go2—slam建图(2)gmapping
  • 历年西安交通大学计算机保研上机真题
  • 小程序跳转H5或者其他小程序
  • KubeMQ 深度实践:构建可扩展的 LLM 中台架构
  • 使用FastAPI+Sqlalchemy从一个数据库向另一个数据库更新数据(sql语句版)
  • 在线政治采购系统架构构建指南
  • 【设计模式】责任链模式
  • Scratch节日 | 龙舟比赛 | 端午节
  • 历年南京大学计算机保研上机真题
  • 信息化项目验收测试:MES 系统验收测试的测试重点
  • 海思 35XX MIPI读取YUV422
  • USB MSC SCCI
  • 力扣HOT100之动态规划:322. 零钱兑换
  • web自动化-Selenium、Playwright、Robot Framework等自动化框架使用场景优劣对比
  • 拉普拉斯噪声
  • eBest智能价格引擎系统 助力屈臣氏饮料落地「价格大脑」+「智慧通路」数字基建​
  • 医疗IT系统绝缘监测及故障定位,绝缘监测技术在医院关键区域的应用
  • t015-预报名管理系统设计与实现 【含源码!!!】
  • 【请关注】各类数据库优化,抓大重点整改,快速优化空间mysql,Oracle,Neo4j等
  • Python打卡第40天