LeetCode 3. 无重复字符的最长子串(Longest Substring Without Repeating Characters)
题目描述
给定一个字符串,找出不含有重复字符的最长子串的长度。
示例:
给定 "abcabcbb"
,没有重复字符的最长子串是 "abc"
,那么长度就是3。
给定 "bbbbb"
,最长的子串就是 "b"
,长度是1。
给定 "pwwkew"
,最长子串是 "wke"
,长度是3。请注意答案必须是一个子串,"pwke"
是 子序列 而不是子串。
解题思路
采用双指针的思想,维护两个指针i、j,i为无重复子串的右端点,j为无重复子串的左端点,这样此子串的长度为i-j+1.再用哈希的思想维护一个大小为128的数组,其下标代表ASCII码共128个字符,下标对应的值记录当前字符最后一次出现位置的后一个位置。这样做的目的是在子串中遇到重复的字符时,下一个无重复子串一定不包含左边的重复字符,所以直接从左边重复字符的后一个位置继续寻找。令哈希数组初始全为0,这样i每次向后走一步,
- 若i指向的字符在j~i-1的字符串中出现,即哈希数组中当前字符下标对应位置大于j,则j指向左边重复字符的后一个位置,否则j不动
- 接着计算当前无重复子串的长度并更新最大长度
- 最后修改哈希数组,使当前字符下标对应值为当前位置+1
代码
1 class Solution { 2 public: 3 int lengthOfLongestSubstring(string s) { 4 int idx[128] = {0}; 5 int maxLen = 0; 6 for(int i = 0, j = 0; i < s.size(); i++){ 7 j = max(idx[s[i]], j); 8 maxLen = max(i-j+1, maxLen); 9 idx[s[i]] = i+1; 10 } 11 return maxLen; 12 } 13 };
转载于:https://www.cnblogs.com/wmx24/p/9141928.html
LeetCode 3. 无重复字符的最长子串(Longest Substring Without Repeating Characters)相关推荐
- leetcode算法—无重复字符的最长子串 Longest Substring Without Repeating Characters
关注微信公众号:CodingTechWork,一起学习进步. 题目 Longest Substring Without Repeating Characters: Given a string, fi ...
- [贪心|字符串] leetcode 3 无重复字符的最长子串
[贪心|字符串] leetcode 3 无重复字符的最长子串 1.题目 题目链接 给定一个字符串,请你找出其中不含有重复字符的最长子串的长度. 示例1: 输入: "abcabcbb" ...
- 【LeetCode】无重复字符的最长子串【滑动窗口法】
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc&qu ...
- LeetCode 3. 无重复字符的最长子串(滑动窗口+哈希)
1. 题目 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 " ...
- [leetcode] 3.无重复字符的最长子串
给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 " ...
- LeetCode 3:无重复字符的最长子串 思考分析
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc&qu ...
- LeetCode之无重复字符的最长子串
1. 题目 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度.示例 1:输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "ab ...
- LeetCode 3. 无重复字符的最长子串 (滑动窗口哈希表)
3. 无重复字符的最长子串 题意: 找子串 子串中无重复字符 要求子串长度最长 解法1(暴力法) 思路: 建立一个长度不断变小的滑动窗口 用一个指针指针扫描窗口内的每个元素: 如果除去指针指向的那个元 ...
- leetcode -- 3.无重复字符的最长子串
内容描述:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. class Solution(object):def lengthOfLongestSubstring(self, s):& ...
最新文章
- Pytest - 使用介绍
- 数学:莫比乌斯反演-约数个数和
- 编写HTML提高编写代码的效率,优化innerHTML操作(提高代码执行效率)
- UDT源码剖析(六):UDT::socket()过程代码注释
- postman如何发送application/json类的post请求
- 北妈每日一题:到底谁养了我的鱼!
- abs 不会整数 方法 溢出_asp cint clng的范围与防止cint和clng的溢出解决方法大全
- 整理索引碎片,提升SQL Server速度 SQL Server“吃内存”的解决(转载)
- 华成英模拟电子技术笔记(1)-绪
- VOIP Codec 三剑客之 ISAC/ILBC -- ISAC (3) High Band Encode 模块
- 托福学习计划留学考研
- qq账号绑定服务器地址,网站接入 QQ 登录整合社交账号登录 - 文章教程
- matlab在solver,matlab的solver
- 计算机数字键盘无法输入数字,键盘无法输入,键盘数字键打不出来
- mysql三叶草,温州日报瓯网 - 面对温州话,你被困住了吗?
- 团体程序设计天梯赛--个人总结
- 1字节是多少位,汉字utf-8又占多少。
- 微信支付密码设置html,微信支付页面怎么加密码锁屏(微信支付界面怎么上锁)...
- 浏览器中实现3D全景浏览
- 用于计算圆柱体体积和面积的Python程序
热门文章
- Swipe JS – 移动WEB页面内容触摸滑动类库
- HTML中添加后退、前进、刷新的超链接
- 边缘检测的各种微分算子比较(Sobel,Robert,Prewitt,Laplacian,Canny)
- 多类SVM的损失函数
- HSI颜色空间及其应用
- 图像处理之快速均值模糊(Box Blur)
- VRRP与VLAN实验(HuaWei)
- 记录一次无聊的(经历了Nodejs - Shell - C)的探索问题过程
- 来自damon的zencart二次开发教程-2.2登录模块分析
- 第17节 业务流程管理和重组