第一题:         char[] chars = s.toCharArray();         //记录不同的字符,并将值置为2         HashMap<Character, Integer> map = new HashMap<>();         for (char aChar : chars) {             map.put(aChar, 2);         }                  int left = 0;         int right = 0;         // 从左往右遍历 直到当前窗口包含所有字符 遍历结束后得到  从左往右最长的字符串         for (int i = 0; i < chars.length; i++) {             // 为2 说明当前字符没有加入当前窗口中 所以加入并将值设为1             if (map.get(chars[i]) == 2) {                 //加入后 当前字符就不必考虑了                 map.put(chars[i], 1);                 //更新右边区间                 right = i;             }         }         // 从右往左遍历 直到当前窗口包含所有字符 遍历结束后得到  从左往右最短的字符串         for (int i = right; i >= 0; i--) {             // 为1 说明当前字符没有加入当前窗口 所以加入并将值设为0             if (map.get(chars[i]) == 1) {                 //加入后 当前字符就不必考虑了                 map.put(chars[i], 0);                 //更新左边区间                 left = i;             }         }         return new int[]{left,right-left+1}; 优化一下,可以提前终止,想不到其他的了,太菜了