一、解题方法:滑动窗口

1.本题可以使用双层for循环暴力破解,但是时间复杂度很高,会达到O(n^2),所以采用滑动窗口的方法来降低时间复杂度。

2.定义一个HashMap数据集合,其中key值为字符,value值为字符位置+1,+1表示从字符位置后一个开始不重复

3.我们定义不重复子串的开始位置为start,结束位置为end

4.随着end不断遍历向后,会遇到与[start,end]区间内字符相同的情况,此时将字符作为key值,获取其value值,并更新start,此时[start,end]区间内不存在重复字符

5.无论是否更新start,都会更新其map数据集合和结果ans

6.最终的时间复杂度是O(N)

二、代码如下

class Solution {public int lengthOfLongestSubstring(String s) {HashMap<Character,Integer> hashMap = new HashMap<>();int ans = 0;for(int start = 0,end = 0;end < s.length();end++){char ch = s.charAt(end);if(hashMap.containsKey(ch)){start = Math.max(hashMap.get(ch),start);}ans = Math.max(ans,end-start+1);hashMap.put(ch,end+1);}return ans;}
}

10.无重复字符的最长子串---使用滑动窗口方法和哈希表来解决相关推荐

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

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

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

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

  3. 无重复字符的最长子串_滑动窗口

    思路: 这道题主要用到思路是:滑动窗口. 其实就是一个队列,比如例题中的 abcabcbb,进入这个队列(窗口)为 abc 满足题目要求,当再进入 a,队列变成了 abca,这时候不满足要求.所以,我 ...

  4. [剑指offer]面试题第[48]题[Leetcode][JAVA][第3题][无重复字符的最长字串][滑动窗口][HashSet/Map]

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

  5. LeetCode 3.无重复字符的最长字串(滑动窗口)

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

  6. leetcode 395. 至少有 K 个重复字符的最长子串(滑动窗口)

    给你一个字符串 s 和一个整数 k ,请你找出 s 中的最长子串, 要求该子串中的每一字符出现次数都不少于 k .返回这一子串的长度. 示例 1: 输入:s = "aaabb", ...

  7. c++ 数组的输入遇到特定字符停止输入_滑动窗口思维--挑战“无重复字符的最长子串”

    文章来源: 饭饭的Python学习之路 作者: 一粒米饭 今天要挑战的是"无重复字符的最长子串". 难度:中等 题目描述: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 ...

  8. Leetcode刷题100天—3. 无重复字符的最长子串(滑动窗口+集合+双指针)—day21

    前言: 作者:神的孩子在歌唱 大家好,我叫运智 3. 无重复字符的最长子串 难度中等6009收藏分享切换为英文接收动态反馈 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度. 示例 ...

  9. 汇编语言求无符号数组中出现的次数最多数_【今日最佳leecode通俗易懂】无重复字符的最长子串...

    相信看了这个标题的同学,对这道题以已经非常不陌生了,就是leecode当中的第三题,之所以要单独的写一写主要对我来说,里面涉及到有一个滑动窗口, 散列表, 字符编码等知识点比较重要,也有几个小技巧,这 ...

最新文章

  1. Linux进程管理: 多进程编程
  2. gitee 拉取其他分支_如何使用 Gitee 快速搭建 ESP-IDF 开发环境(Windows 版)
  3. 基于100,000篇演讲的分析数据科学家发现了最佳演讲者的特征——及时解释听众不懂的词语,必要时提高10%的音调,正确和恰当的手势,氛围的营造...
  4. HDFS--分布式文件系统
  5. linux不显示无线网卡驱动安装失败,Linux_Ubuntu无线网卡驱动安装方法,安装了Ubuntu后发现没有无线网 - phpStudy...
  6. jQuery的内容选择器和属性
  7. SpringBoot 精通系列-SpringBoot如何操作Memcache
  8. 临床试验中lm是什么职位_据说!这是离临床试验成功最近的职位之一
  9. win7,8走网络打印机出现删除设备和打印机门未关闭的解决方法
  10. Qt 3D Opengl学习
  11. 服务器维修工单模板,XX运维服务方案模板.doc
  12. 深入理解计算机网络-4信号编码与调制2
  13. 五步帮你实现用户画像的数据加工
  14. 搭建个人网站需要的三个步骤
  15. c站官网(c站官网客户端下载苹果)
  16. 秋招选择题(二)图形推理题
  17. 总结:线程间频繁切换为什么耗费资源?
  18. 子类继承多个父类总结
  19. 学术期刊《中华全科医学》
  20. 由乌龟画一个正方形所想到的

热门文章

  1. nginx 部署antd_design_pro
  2. openCv java Mat和MatOfByte的之间的相互转换 (4)
  3. 【问题收录】ImportError No module named MySQLdb 问题解决
  4. 脚本控制向Android模拟拨打电话,发送短信,定位设置功能
  5. 怎么html跟asp结合,xml与asp简单结合实现html模板功能.doc
  6. windows共享linux的某一文件夹
  7. 零基础入门学习Python(36) 类和对象:继承
  8. MER: 基于ITS区域marker扩增真菌群落的准确性
  9. RepeatMasker安装和使用——基因组重复序列注释
  10. 文档计算机无法分页,同一EXCEL文件在不同计算机上显示分页不同解决办法(6页)-原创力文档...