3. 无重复字符的最长子串
给定一个字符串 s ,请你找出其中不含有重复字符的 最长
子串
的长度。
滑动窗口的一种算法模板
//外层循环扩展右边界,内层循环扩展左边界
for (int l = 0, r = 0 ; r < n ; r++) {
//当前考虑的元素
while (l <= r && check()) {//区间[left,right]不符合题意
//扩展左边界
}
//区间[left,right]符合题意,统计相关信息
}
本题套用模板
public int lengthOfLongestSubstring(String s) {
char[] cs = s.toCharArray();
int max = 0;
Set<Character> set = new HashSet<>();
for(int l = 0 , r = 0 ; r < cs.length ; r++){
char c = cs[r];
while(set.contains(c)){
set.remove(cs[l]);
l++;
}
set.add(c);
max = Math.max(max,r-l+1);
}
return max;
}