题目:
给定一个字符串 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;
}
}