Leetcode 3. 无重复字符的最长子串

主要思路是滑动窗口,见代码注释 

3. 无重复字符的最长子串 - 力扣(LeetCode)

class Solution {
    /**
    2024.6.16
    整体思路就是滑动窗口,两个指针left,right起始值都是0开始,n是字符串长度.length()
    用个集合set记录子串里有的字符
    right不断往右扩张,遇到set里没有,直接right++,set增加个字符,然后更新最大长度
    遇到set里有的,就更新left,left++,直到set里没有没有重复的字符
    这样整体遍历下来就可以得到最长的不重复的字符串子串了
     */
    public int lengthOfLongestSubstring(String s) {
        Set<Character> set=new HashSet<>();
        int maxLen=0,left=0,right=0;
        while(right<s.length()){
            if(!set.contains(s.charAt(right))){
                set.add(s.charAt(right));
                // 先++,方便后面更新长度
                right++;
                maxLen=maxLen>(right-left)?maxLen:(right-left);
            } else{
                set.remove(s.charAt(left));
                left++;
            }
        }
        return maxLen;
    }
}

相关推荐

  1. 重复字符长子LeetCode 3

    2024-06-16 21:22:03       70 阅读
  2. leetcode-3.重复字符长子

    2024-06-16 21:22:03       60 阅读
  3. [leetcode] 3. 重复字符长子

    2024-06-16 21:22:03       47 阅读
  4. Leetcode 3. 重复字符长子

    2024-06-16 21:22:03       41 阅读
  5. Leetcode 3. 重复字符长子

    2024-06-16 21:22:03       39 阅读
  6. LeeCode 3. 重复字符长子

    2024-06-16 21:22:03       53 阅读

最近更新

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

    2024-06-16 21:22:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-16 21:22:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-16 21:22:03       87 阅读
  4. Python语言-面向对象

    2024-06-16 21:22:03       96 阅读

热门阅读

  1. C# —— while循环语句

    2024-06-16 21:22:03       32 阅读
  2. c++ 笔记二

    2024-06-16 21:22:03       32 阅读
  3. 什么是贸易顺差和贸易逆差?

    2024-06-16 21:22:03       24 阅读
  4. 通货膨胀和通货紧缩是什么?

    2024-06-16 21:22:03       31 阅读
  5. 软件服务中的 SLA 到底是什么?

    2024-06-16 21:22:03       28 阅读
  6. 一步一步写线程之十五协程

    2024-06-16 21:22:03       28 阅读
  7. 【Flask 系统教程 7】数据库使用 SQLAlchemy

    2024-06-16 21:22:03       25 阅读
  8. Dubbo源码解析-mock原理

    2024-06-16 21:22:03       30 阅读
  9. MYSQL in和exists

    2024-06-16 21:22:03       31 阅读