3.png

滑动窗口是啥

新的系列了 然后滑动窗口这个名词去了解下

力扣3题解

因为还有点不理解 先印官方

  1. class Solution {
  2. public int lengthOfLongestSubstring(String s) {
  3. // 哈希集合,记录每个字符是否出现过
  4. Set<Character> occ = new HashSet<Character>();
  5. int n = s.length();
  6. // 右指针,初始值为 -1,相当于我们在字符串的左边界的左侧,还没有开始移动
  7. int rk = -1, ans = 0;
  8. for (int i = 0; i < n; ++i) {
  9. if (i != 0) {
  10. // 左指针向右移动一格,移除一个字符
  11. occ.remove(s.charAt(i - 1));
  12. }
  13. while (rk + 1 < n && !occ.contains(s.charAt(rk + 1))) {
  14. // 不断地移动右指针
  15. occ.add(s.charAt(rk + 1));
  16. ++rk;
  17. }
  18. // 第 i 到 rk 个字符是一个极长的无重复字符子串
  19. ans = Math.max(ans, rk - i + 1);
  20. }
  21. return ans;
  22. }
  23. }