题目:
给定一个字符串 s
,请你找出其中不含有重复字符的 最长子串 的长度。
代码:
class Solution {public int lengthOfLongestSubstring(String s) {char[] arr = s.toCharArray(); // 转换成 char[] 加快效率(忽略带来的空间消耗)int n = arr.length, ans = 0, left = 0;boolean[] has = new boolean[128]; // 也可以用 HashSet<Character>,这里为了效率用的数组for (int right = 0; right < n; right++) {char c = arr[right];while (has[c]) // 加入 c 后,窗口内会有重复元素has[arr[left++]] = false;has[c] = true;ans = Math.max(ans, right - left + 1); // 更新窗口长度最大值}return ans;}
}