import java.util.HashMap;
public static int lengthOfLongestSubstring(String s) {
        if (s == null || s.length() == 0)
            return 0;
        int len = s.length();
        int max = 0, leftBound = 0;
        HashMap<Character, Integer> map = new HashMap<>();
        for (int i = 0; i < len; i++) {
            char c = s.charAt(i);
            int tempBound = map.containsKey(c) ? map.get(c) + 1 : 0;
            leftBound = Math.max(leftBound, tempBound);// 滑动窗口的左门限
            max = Math.max(max, i - leftBound + 1);
            map.put(c, i);
        }
        return max;
    }