leetcode题库3-- 无重复字符的最长子串
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
示例 1:
输入: “abcabcbb”
输出: 3
解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。
示例 2:
输入: “bbbbb”
输出: 1
解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。
示例 3:
输入: “pwwkew”
输出: 3
解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。
请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。
思路
一次遍历字符串,记录下每种字母出现的最新索引,当遍历的字母上一次出现的索引大于不重复子串的起始索引时,说明该字母在当前子串重复。不重复子串的长度丢等于,重复字母上一次的索引 - 子串起始索引 + 1 。
下一个子串的起始设置为重复字母的后一位。
最后更新字母对应的索引。
这里用数组来存放字母的索引应该更快。
int lengthOfLongestSubstring(string s) {//因为子串要求不能出现重复字母,因此考虑用一个map,保存每个字母最新索引//还要使用一个变量start 保存子串开始位置索引int start = 0;int res = 0;map<char, int> ch;int s_len = s.size();for(int i = 0; i < s_len; ++i){if(ch.find(s[i]) != ch.end()){int index = ch[s[i]];if(index >= start){// cout << "index " << index << endl;//出现重复字母res = max(res, i - start);// cout <<i << " " << res << endl;start = index + 1; //从重复字母下一个开始计算长度}}ch[s[i]] = i; //更新索引}res = max(res, s_len - start); //遍历完计算最后的不重复子串的长度return res;}
leetcode题库3-- 无重复字符的最长子串相关推荐
- 【leetcode】力扣刷题(3):无重复字符的最长子串(go语言)
一.问题描述 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 " ...
- python【力扣LeetCode算法题库】3- 无重复字符的最长子串
无重复字符的最长子串 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 & ...
- LeetCode精讲 03无重复字符的最长子串(滑动窗口)
题目描述 原创作者:bigsai,维护不易,如有收获,还请点赞.收藏支持! 题目描述: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcb ...
- python字符串中最长的连续升序子串_Leetcode刷题练Python无重复字符的最长子串
这是一道字符串处理算法的题目,在日常编程中,处理字符串是常见任务.该题目会涉及到一个概念"滑动窗口". 一.题目描述 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度 ...
- (LeetCode)Java 求解无重复字符的最长子串
文章目录 一.题解 二.代码 三.总结 一.题解 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因 ...
- 【LeetCode 3-中等】无重复字符的最长子串(高清截图)
3. [中等]无重复字符的最长子串 https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/ 给 ...
- 【LeetCode笔记】3. 无重复字符的最长子串(JAVA、滑动窗口、字符串)
文章目录 题目描述 思路 && 代码 1. 之前的版本 更新 2.0 题目描述 子串:各字符间必须要相邻,而非子序列 使用滑动窗口来做就行 思路 && 代码 1. 之前 ...
- 【Leetcode | 1】3. 无重复字符的最长子串
这里我们可以建立一个HashMap,建立每个字符和其最后出现位置之间的映射,然后我们需要定义两个变量res和left,其中res用来记录最长无重复子串的长度,left指向该无重复子串左边的起始位置的前 ...
- php无重复字符的最长子串,PHP算法之无重复字符的最长子串
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc&qu ...
- LeetCode题库整理【Java】—— 3 无重复字符的最长子串
LeetCode题库整理[Java] ## 3 无重复字符的最长子串 题目:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" ...
最新文章
- SpringBoot返回枚举对象中的指定属性
- Django框架----分页器(paginator)
- html导航条置顶,jquery导航菜单栏固定悬浮顶部实现效果
- C和指针之字符串之实现strcpy函数
- 判断文件是否改变php,PHP判断文件是否被修改实例
- 查看oracle中的中文所占字节数
- 英语常用九种时态记忆要点
- 帅瞎了!手机也能写Python代码!手把手教你在手机或平板上配置Python环境!
- 多载波瑞利信道matlab,瑞利信道仿真matlab.doc
- linux查询文件md5sum,Linux下通过md5sum生成MD5文件校验MD5
- rabbitmq消息队列--restTemplate实现跨域请求--获取JSON字符串
- 牛客网--14405--齐齐录成绩
- HCNP——DR和BDR的概念
- MySQL2014版查询操作的入门级教学
- 马化腾为什么要怼朱啸虎,只因OFO套路太深
- 分布式与容器化的介绍
- 广西交通职业技术学院计算机专业在哪个校区,广西交通职业技术学院宿舍怎么样...
- input,checkbox启用禁用
- Android 源码目录结构
- Openlayers之加载Stamen地图
热门文章
- 哈工大理论力学第八版电子版_理论力学哈工大第八版1第一章思考题课后题
- android 自定义布局 根据布局获取类,android自定义布局中的平滑移动之ViewGroup实现...
- 新闻列表页flex_使用css3的Flex布局实现列表展示
- 深度学习————如何在Python中求解函数的解析表达式
- Python Tkinter之variable用法
- mongodb用户管理和服务安装
- leetcode950. Reveal Cards In Increasing Order
- 2018-2019-2 20165312《网络攻防技术》Exp7 网络欺诈防范
- 【LeetCode 剑指offer刷题】特殊数题3:204 Count Primes
- 把SQLAlchemy查询对象转换成字典/json使用(分开)