zoukankan      html  css  js  c++  java
  • [LeetCode]3. 无重复字符的最长子串(滑动窗口)

    题目

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

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

    题解

    i,j维护滑动窗口,HashMap存储字符出现过的索引,当出现记录过的字符,更新滑动窗口i边界。
    时间复杂度O(n)

    代码

    class Solution {
        public int lengthOfLongestSubstring(String s) {
            if(s==null){
                return 0;
            }
            HashMap<Character,Integer> map=new HashMap<>();
            int maxLen=0;
            
            for(int i=0,j=0;j<s.length();++j){
                if(map.containsKey(s.charAt(j))){
                    i=Math.max(i,map.get(s.charAt(j))+1);
                }
                maxLen=maxLen>j-i+1?maxLen:j-i+1;
                map.put(s.charAt(j),j);
            }
            
            return maxLen;
        }
    }
    
  • 相关阅读:
    MySql学习2
    Java学习:JDBC
    MySql学习
    Java学习:网络编程
    Java学习:反射
    Java学习:多线程(2)
    Java学习:多线程
    .net后台webclient用post方式发送文件和数据
    实用
    day&day
  • 原文地址:https://www.cnblogs.com/coding-gaga/p/11272511.html
Copyright © 2011-2022 走看看