题目描述

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

示例:

给定 "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)相关推荐

  1. leetcode算法—无重复字符的最长子串 Longest Substring Without Repeating Characters

    关注微信公众号:CodingTechWork,一起学习进步. 题目 Longest Substring Without Repeating Characters: Given a string, fi ...

  2. [贪心|字符串] leetcode 3 无重复字符的最长子串

    [贪心|字符串] leetcode 3 无重复字符的最长子串 1.题目 题目链接 给定一个字符串,请你找出其中不含有重复字符的最长子串的长度. 示例1: 输入: "abcabcbb" ...

  3. 【LeetCode】无重复字符的最长子串【滑动窗口法】

    给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc&qu ...

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

    1. 题目 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 " ...

  5. [leetcode] 3.无重复字符的最长子串

    给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 " ...

  6. LeetCode 3:无重复字符的最长子串 思考分析

    给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc&qu ...

  7. LeetCode之无重复字符的最长子串

    1. 题目 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度.示例 1:输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "ab ...

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

    3. 无重复字符的最长子串 题意: 找子串 子串中无重复字符 要求子串长度最长 解法1(暴力法) 思路: 建立一个长度不断变小的滑动窗口 用一个指针指针扫描窗口内的每个元素: 如果除去指针指向的那个元 ...

  9. leetcode -- 3.无重复字符的最长子串

    内容描述:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. class Solution(object):def lengthOfLongestSubstring(self, s):& ...

最新文章

  1. Pytest - 使用介绍
  2. 数学:莫比乌斯反演-约数个数和
  3. 编写HTML提高编写代码的效率,优化innerHTML操作(提高代码执行效率)
  4. UDT源码剖析(六):UDT::socket()过程代码注释
  5. postman如何发送application/json类的post请求
  6. 北妈每日一题:到底谁养了我的鱼!
  7. abs 不会整数 方法 溢出_asp cint clng的范围与防止cint和clng的溢出解决方法大全
  8. 整理索引碎片,提升SQL Server速度 SQL Server“吃内存”的解决(转载)
  9. 华成英模拟电子技术笔记(1)-绪
  10. VOIP Codec 三剑客之 ISAC/ILBC -- ISAC (3) High Band Encode 模块
  11. 托福学习计划留学考研
  12. qq账号绑定服务器地址,网站接入 QQ 登录整合社交账号登录 - 文章教程
  13. matlab在solver,matlab的solver
  14. 计算机数字键盘无法输入数字,键盘无法输入,键盘数字键打不出来
  15. mysql三叶草,温州日报瓯网 - 面对温州话,你被困住了吗?
  16. 团体程序设计天梯赛--个人总结
  17. 1字节是多少位,汉字utf-8又占多少。
  18. 微信支付密码设置html,微信支付页面怎么加密码锁屏(微信支付界面怎么上锁)...
  19. 浏览器中实现3D全景浏览
  20. 用于计算圆柱体体积和面积的Python程序

热门文章

  1. Swipe JS – 移动WEB页面内容触摸滑动类库
  2. HTML中添加后退、前进、刷新的超链接
  3. 边缘检测的各种微分算子比较(Sobel,Robert,Prewitt,Laplacian,Canny)
  4. 多类SVM的损失函数
  5. HSI颜色空间及其应用
  6. 图像处理之快速均值模糊(Box Blur)
  7. VRRP与VLAN实验(HuaWei)
  8. 记录一次无聊的(经历了Nodejs - Shell - C)的探索问题过程
  9. 来自damon的zencart二次开发教程-2.2登录模块分析
  10. 第17节 业务流程管理和重组