Files
obsidian/АиСД/Задачи/LeetCode/Longest Substring Without Repeating Characters.md
T
roma-dxunvrs f57762fd3b Init
2026-09-03 21:40:46 +03:00

828 B

Leetcode #3 | #Medium | Скользящее окно | Хэш-таблицы

Идея

Скользящее окно с сетом, в начале прохода while двигает l пока есть совпадения, потом максимум из реза и r-l+1, затем добавляем в сет текущий символ

Big-O

  • Время O(N)
  • Память O(1)

Код

class Solution {
    public int lengthOfLongestSubstring(String s) {
        Set<Character> set = new HashSet<>();
        int l = 0, res = 0;
        for (int r = 0; r < s.length(); r++) {
            while (set.contains(s.charAt(r))) { set.remove(s.charAt(l)); l++; }
            set.add(s.charAt(r));
            res = Math.max(res, r - l + 1);
        }
        return res;
    }
}