class Solution {
public int lengthOfLongestSubstring(String s) {
Set<Character> set = new HashSet<>();
int len = s.length();
int l = 0;
int r = 0;
int ans = 0;
//滑动窗口可以按照这个套
while(l < len) {
//没有这一个判断运行会超时
if(ans >= len - 1 - l + 1) {
break;
}
//右指针移动
while(r < len && !set.contains(s.charAt(r))) {
set.add(s.charAt(r));
r++;
}
//右移完后计算长度
ans = Math.max(ans, r - 1 - l + 1);
//左指针移动 因为已经出现重复了 所以要移动左指针
while(r < len && set.contains(s.charAt(r))) {
set.remove(s.charAt(l));
l++;
}
}
return ans;
}
}
算法-字符串-滑动窗口-无重复字符串的最长字串
猜你喜欢
转载自blog.csdn.net/qq_45100361/article/details/113662926
今日推荐
周排行