LeetCode 3. 无重复字符的最长子串(滑动窗口+哈希)

1. 题目

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

示例 1:
输入: "abcabcbb"
输出: 3 
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:
输入: "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:
输入: "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

《剑指Offer》同题:面试题48. 最长不含重复字符的子字符串

2. 哈希解题

  • 设置start,end窗口
  • 检查字符在哈希表中吗?不在,插入表中,value为下标
  • 在表中则,删除start到重复的那个位置的hash表中的key
  • 更新窗口和maxlen
class Solution {
public:int lengthOfLongestSubstring(string s) {int i, j, k, start = 0, end = 0, maxlen = 0;unordered_map<char,int> m;unordered_map<char,int>::iterator it;for(i = 0; i < s.size(); ++i){it = m.find(s[i]);if(it != m.end()){k = it->second;for(j = start; j <= k; ++j)	//之前没用k存储,erase后,it失效m.erase(s[j]);start = k+1;}m[s[i]] = i;++end;if(end-start > maxlen)maxlen = end-start;}return maxlen;}
};

在这里插入图片描述
优化写法

class Solution {
public:int lengthOfLongestSubstring(string s) {int i, k, start = 0, end = 0, maxlen = 0;unordered_map<char,int> m;unordered_map<char,int>::iterator it;for(i = 0; i < s.size(); ++i){it = m.find(s[i]);if(it != m.end()){k = it->second;start = max(start, k+1);//不删key,start直接跳到重复的下一个}m[s[i]] = i;//更新下标位置++end;if(end-start > maxlen)maxlen = end-start;}return maxlen;}
};

在这里插入图片描述

class Solution {	//2020.3.10
public:int lengthOfLongestSubstring(string s) {if(s.empty())return 0;set<char> set;int i = 0, j = 0, maxlen = 0;for( ; j < s.size(); ++j){if(!set.count(s[j])){set.insert(s[j]);maxlen = max(maxlen,j-i+1);}else{while(s[i] != s[j]){set.erase(s[i++]);}i++;}}return maxlen;}
};
class Solution {	//2020.5.2
public:int lengthOfLongestSubstring(string s) {unordered_map<char,int> m;int maxlen = 0, i = 0, j = 0;while(j < s.size()){m[s[j]]++;if(m[s[j]]>1){while(m[s[j]]>1){m[s[i]]--;i++;}}elsemaxlen = max(maxlen,j-i+1);j++;}return maxlen;}
};

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

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

相关文章

安装kenlm出现问题的解决方案gcc g++

安装kenlm出现问题的解决方案 apt-get install gcc apt-get install g参考文章&#xff1a;gcc: error trying to exec ‘cc1plus’: execvp: No such file or directory

论文浅尝 - TACL2020 | 改进低资源跨语言实体链接的候选生成问题

论文笔记整理&#xff1a;谭亦鸣&#xff0c;东南大学博士。来源&#xff1a;TACL 2020链接&#xff1a;https://arxiv.org/ftp/arxiv/papers/2003/2003.01343.pdf1.背景介绍跨语言实体链接(Cross-lingual Entity Linking, XEL)旨在利用源语言文本中实体描述(提及)&#xff0c;…

卫星系统——酒店后端全链路日志收集工具介绍

背景 随着酒店业务的高速发展&#xff0c;我们为用户、商家提供的服务越来越精细&#xff0c;系统服务化程度、复杂度也逐渐上升。微服务化虽然能够很好地解决问题&#xff0c;但也有副作用&#xff0c;比如&#xff0c;问题定位。 每次问题定位都需要从源头开始找同事帮我人肉…

拖拽式Vue组件代码生成平台(LCG)新版详细介绍

拖拽式Vue组件代码生成平台是一款小猴自研的Vue代码生成工具&#xff0c;英文全称&#xff1a;Low Code Generator&#xff0c;简称LCG。它也是一种LowCode解决方案。通过它可以快速完成Vue组件的代码骨架搭建&#xff0c;通过减少不必要的重复工作从而带来开发效率的提升。 体…

ImportError: libgthread-2.0.so.0: cannot open shared object file: No such file or directory

apt-get update apt-get install libglib2.0-dev系统&#xff1a;ubuntu16.04

LeetCode 454. 四数相加 II(哈希)

1. 题目 给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) &#xff0c;使得 A[i] B[j] C[k] D[l] 0。 为了使问题简单化&#xff0c;所有的 A, B, C, D 具有相同的长度 N&#xff0c;且 0 ≤ N ≤ 500 。所有整数的范围在 -228 到 228 - 1 之间…

论文浅尝 - AAAI2020 | 多轮对话系统中的历史自适应知识融合机制

论文笔记整理&#xff1a;潘锐&#xff0c;天津大学硕士。链接&#xff1a;https://www.aaai.org/ojs/index.php/AAAI/article/view/6425来 源&#xff1a;AAAI 2020论文简介保持对话的一致性和避免内容重复是构建以知识为基础的多轮对话系统的两个关键因素。尽管一些工作倾…

高性能平台设计—美团旅行结算平台实践

本文根据第23期美团技术沙龙演讲内容整理而成。 背景 美团酒旅有很多条业务线&#xff0c;例如酒店、门票、火车票等等&#xff0c;每种业务都有结算诉求&#xff0c;而结算处于整个交易的最后一环不可缺少&#xff0c;因此我们将结算平台化&#xff0c;来满足业务的结算诉求。…

小程序调试技术导读

近期团队内在自研小程序&#xff0c;我负责开发者工具中的调试部分。调试作为面向开发者的基础能力&#xff0c;扮演了极为重要的角色。 本篇文章是导读文章。 调试能力从0到1一共经历了4个版本&#xff0c;接下来的文章将会以这4个版本为主线分别进行介绍。 初始版 上图为调试…

可交互的 Attention 可视化工具!我的Transformer可解释性有救了?

文 | Sherry视觉是人和动物最重要的感觉&#xff0c;至少有80%以上的外界信息是经过视觉获得的。我们看论文的时候&#xff0c;通过图表来确定文章的大致内容往往也是一个更高效的 说到深度神经网络的可视化&#xff0c;最经典的莫过于的CNN密恐图了&#xff1a;这种可视化方法…

ImportError: libSM.so.6: cannot open shared object file: No such file or dir

ImportError: libSM.so.6: cannot open shared object file: No such file or dir 出现错误&#xff1a; ImportError: libSM.so.6: cannot open shared object file: No such file or dir 解决方法&#xff1a; apt-get install libsm6如果你出现了上面的错误&#xff0c;那…

LeetCode 347. 前 K 个高频元素(哈希/优先队列)

文章目录1. 题目2. 解题2.1 哈希2.2 优先队列1. 题目 给定一个非空的整数数组&#xff0c;返回其中出现频率前 k 高的元素。 示例 1: 输入: nums [1,1,1,2,2,3], k 2 输出: [1,2]示例 2: 输入: nums [1], k 1 输出: [1] 说明&#xff1a; 你可以假设给定的 k 总是合理的&…

Lego-美团接口自动化测试实践

一、概述 1.1 接口自动化概述 众所周知&#xff0c;接口自动化测试有着如下特点&#xff1a; 低投入&#xff0c;高产出。比较容易实现自动化。和UI自动化测试相比更加稳定。如何做好一个接口自动化测试项目呢&#xff1f; 我认为&#xff0c;一个“好的”自动化测试项目&#…

小程序调试技术详解(基于小猴小程序)

本篇文章主要围绕小猴小程序调试技术第三版进行展开。 在上一篇导读文章中提到&#xff0c;小猴小程序的调试部分从无到有一共经历了3个版本。本篇文章会详细描述面向开发者的调试功能是如何实现的。 文章将会描述以下部分&#xff1a; 调试实现的基本通信关系结构。如何实现…

论文浅尝 - CIKM2020 | 用于推荐系统的多模态知识图谱

论文笔记整理&#xff1a;王琰&#xff0c;东南大学硕士。来源&#xff1a;CIKM 2020链接&#xff1a;https://doi.org/10.1145/3340531.3411947研究背景与任务描述为了解决推荐系统中的数据稀疏和冷启动问题&#xff0c;研究人员通过利用有价值的外部知识作为辅助信息&#xf…

FedNLP: 首个联邦学习赋能NLP的开源框架,NLP迈向分布式新时代

文 | 阿毅两周前&#xff0c;南加大Yuchen Lin&#xff08;PhD student USC and ex-research intern GoogleAI)所在的团队在Twitter官宣开源首个以研究为导向的联邦学习赋能NLP的FedNLP框架。发布数小时内就获得了647个赞&#xff0c;163次转发&#xff0c;可见其热度。我相信大…

LeetCode 380. 常数时间插入、删除和获取随机元素(哈希+vector)

1. 题目 设计一个支持在平均 时间复杂度 O(1) 下&#xff0c;执行以下操作的数据结构。 insert(val)&#xff1a;当元素 val 不存在时&#xff0c;向集合中插入该项。 remove(val)&#xff1a;元素 val 存在时&#xff0c;从集合中移除该项。 getRandom&#xff1a;随机返回现…

论文浅尝 - ICLR2020 | 知识图谱中数值规则的可微学习

论文笔记整理&#xff1a;许泽众&#xff0c;浙江大学博士研究生。研究方向&#xff1a;知识图谱&#xff0c;规则挖掘等。论文链接&#xff1a;https://openreview.net/pdf?idrJleKgrKwS本文解决的是规则的学习问题&#xff0c;学习出来的规则可用于知识推理任务&#xff0c;…

2021大厂面试高频100题最新汇总(附答案详解)

昨天在知乎上刷到一个热门问题:程序员需要达到什么水平才能顺利拿到 20k 无压力&#xff1f;其中一个最热门的回答是&#xff1a;“其实&#xff0c;无论你是前端还是后端、想进大厂还是拿高薪&#xff0c;算法都一定很重要。”为什么&#xff0c;算法会如此重要&#xff1f;不…