力扣热门100题之无重复字符的最长子串

张开发
2026/4/21 11:01:21 15 分钟阅读

分享文章

力扣热门100题之无重复字符的最长子串
核心思路用两个指针形成一个滑动窗口左指针 i控制窗口的起点右指针 right控制窗口的终点Set记录窗口里已经有哪些字符快速判断重复规则右指针一直往右走把字符加入窗口一旦发现重复字符左指针往右缩全程记录窗口最大长度完整代码实现class Solution { public int lengthOfLongestSubstring(String s) { // 用来存放当前窗口内的字符判断是否重复 SetCharacter set new HashSet(); int n s.length(); // 右指针从-1开始代表还没移动 int right -1; int maxLen 0; for (int i 0; i n; i) { if (i ! 0) { // 左指针移动一步移除左边移出窗口的字符 set.remove(s.charAt(i - 1)); } while(right 1 n !set.contains(s.charAt(right 1))){ set.add(s.charAt(right 1)); right; } maxLen Math.max(maxLen,right - i 1); } return maxLen; } }

更多文章