public static int lengthOfLongestSubstring(String s) {
Set<Character> set = new HashSet<>();
//1.初始化l,r,currentLength,maxLength
int l = 0, r = 0, currentLength = 0, maxLength = 0;
//2.遍历s,知道r到末尾
//判断当前元素是否在set中。
//在=>当前窗口出现重复字符=>
// l向右移动直到set中不含有与当前元素相同的元素(从set中移除l指向的元素+l++)
//不在=>更新最优结果
while (r < s.length()){
char currentChar = s.charAt(r);
while (set.contains(currentChar)){
set.remove(s.charAt(l));
l++;
}
set.add(currentChar);
currentLength = r - l + 1;
maxLength = Math.max(maxLength, currentLength);
r++;
}
return maxLength;
}
力扣3题:无重复字符的最长子串
最新推荐文章于 2024-08-04 16:45:57 发布