Algorithm 滑动窗口模版 统一模版 Java1 2 3 4 5 6 7 8//外层循环扩展右边界,内层循环扩展左边界 for (int l = 0, r = 0 ; r < n ; r++) { //当前考虑的元素 while (l <= r && check()) {//区间[left,right]不符合题意 //扩展左边界 } //区间[left,right]符合题意,统计相关信息 } 模版题:3. 无重复字符的子串 Java题解 Java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17class Solution { public int lengthOfLongestSubstring(String s) { char[] ss = s.toCharArray(); Set<Character> set = new HashSet<>(); int res = 0; for (int left = 0, right = 0; right < s.length(); right++) { char ch = ss[right]; while (set.contains(ch)) { set.remove(ss[left]); left++; } set.add(ss[right]); res = Math.max(res, right - left + 1); } return res; } } python题解 Python 1 2 3 4 5 6 7 8 9 10 11class Solution: def lengthOfLongestSubstring(self, s: str) -> int: x = set() res, left = 0, 0 for right in range(len(s)): while s[right] in x: x.remove(s[left]) left += 1 x.add(s[right]) res = max(res, right - left + 1) return res 此页面有帮助吗? 谢谢你的反馈! Thanks for your feedback! Help us improve this page by using our feedback form.