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

204 阅读1分钟

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

class Solution {
    public int lengthOfLongestSubstring(String s) {
        //滑动窗口,维护一个start,end指针,返回的是start、end指针的差值
        Map<Character,Integer> map = new HashMap();
        int len = s.length();
        int ans = 0;
        int start=0,end=0;
        for(;end<len;end++){
            char c= s.charAt(end);
            if(map.containsKey(c)){
                start = Math.max(start,map.get(c));
            }
            ans = Math.max(ans,end-start+1);
            map.put(s.charAt(end),end+1);
        }
        return ans;
    }
}