1.题目介绍
2.解法
class Solution {
public int lengthOfLongestSubstring(String s) {
int left = 0, res = 0, len = s.length();
int[] win = new int[128]; // 假设字符集是ASCII,可以容纳所有字符
// 遍历字符串 s,使用 i 作为右指针
for(int i = 0; i < len; i++) {
char c = s.charAt(i);
win[c]++;
// 当窗口内有一个以上的重复字符时,left指针不断地右移
// 不断缩小窗口,直到使重复的字符移出窗口
while(win[c] > 1){
win[s.charAt(left)]--;
left++;
}
res = Math.max(res, i - left + 1);
}
return res;
}
}