【力扣 Hot100 | 第二天】4.11 无重复字符的最长子串

在这里插入图片描述

2.无重复字符的最长子串

2.1题目

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

  • 示例一:
输入: s = "abcabcbb"
输出: 3 
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。

2.2解法一:滑动窗口

2.2.1解题思路

  • 使用一个for循环代表窗口的结束位置,一个变量left代表窗口的起始位置;

  • 使用一个map集合存储字符串中的 字符 以及在字符串中的索引位置

  • 每次循环中,若map集合没有该字符,则将该字符以及索引位置存放到map中;

  • 若已经存在该字符,则需移动left起始位置, left在(原有的left,重复字符的下一个位置)两个中取最大值

    • 目的:确保left起始位置不会往前移动

    • 例子:

      #求字符串 abba 的无重复字符的最长子串
      
      #在遍历索引为3的字符a时,left值为2
      #left在(原有的left:2,以及重复字符a索引的下一个位置,即1)中应该取原有的2
      #若left取了1,则left往前移动了
      
  • 原有的max长度和 ( j-left+1 )比较,取最大值

2.2.2代码实现

	public int lengthOfLongestSubstring(String s) {
        
        if(s.length()==0){
            return 0;
        }
        
        Map<Character,Integer> map=new HashMap<>();
        int max=Integer.MIN_VALUE;
        int left=0;
        for(int j=0;j<s.length();j++){
            char ch=s.charAt(j);
            if(map.containsKey(ch)){
                left=Math.max( left, map.get(ch)+1);  //起始位置取原来的值 或者 重复字符的下一位
            }
            //加入该字母
            map.put(ch,j);
            max=max>j-left+1?max:j-left+1;			//更新最长子串的长度
        }
        return max;
    }

在这里插入图片描述

相关推荐

  1. [ Hot100]Day8 重复字符长子

    2024-04-12 10:24:03       60 阅读
  2. Hot100-T8重复字符长子(经典)

    2024-04-12 10:24:03       35 阅读
  3. hot100:08重复字符长子

    2024-04-12 10:24:03       65 阅读
  4. -3. 重复字符长子

    2024-04-12 10:24:03       44 阅读
  5. 3. 重复字符长子

    2024-04-12 10:24:03       28 阅读
  6. 热题100_滑动窗口_3_重复字符长子

    2024-04-12 10:24:03       59 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-12 10:24:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-12 10:24:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-12 10:24:03       82 阅读
  4. Python语言-面向对象

    2024-04-12 10:24:03       91 阅读

热门阅读

  1. 加权随机负载均衡算法golang实现

    2024-04-12 10:24:03       40 阅读
  2. 单例模式a

    2024-04-12 10:24:03       39 阅读
  3. 面试经典150题——删除有序数组中的重复项

    2024-04-12 10:24:03       38 阅读
  4. HistoricActivityInstance和HistoricProcessInstance区别

    2024-04-12 10:24:03       32 阅读
  5. Zookeeper

    Zookeeper

    2024-04-12 10:24:03      36 阅读
  6. 带资源实战一篇:某音日常养号脚本实现教程

    2024-04-12 10:24:03       42 阅读
  7. springboot + neo4j 问题总结

    2024-04-12 10:24:03       37 阅读