Day05:剑指 Offer II 016. 不含重复字符的最长子字符串

题目

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

代码实现

哈希表+滑动窗口

class Solution {
    public int lengthOfLongestSubstring(String s) {
        int res = -1;
        if (s.equals(" ") || s.equals("")){
            return s.length();
        }
        Map<Character,Integer> map = new HashMap<>();
        int left = 0;
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if (map.containsKey(c)){
                left = Math.max(map.get(c)+1,left);
            }
            map.put(c,i);
            res = Math.max(map.get(c) - left+1,res);
        }
        return res;
    }
}

你可能感兴趣的:(剑指,Offer,专项突击版,leetcode,散列表,算法)