TGViewer
Мобильная разработка Мобильная разработка @mobdevelop · 3.88K subscribers
Post #211 2.36K
Задача с LeetCode по Swift

Описание:
Дана строка s. Вернуть длину самой длинной подстроки, которая содержит не более двух различных символов.

Пример:


Input: s = «eceba»
Output: 3
Explanation: The substring is «ece» which its length is 3.


Алгоритм:

1. Вернуть N, если длина строки N меньше 3.

2. Установить оба указателя в начало строки: left = 0 и right = 0, и инициализировать максимальную длину подстроки max_len = 2.

3. Пока указатель right меньше N: Если хеш-таблица содержит менее 3 различных символов, добавить текущий символ s[right] в хеш-таблицу и сдвинуть указатель right вправо.
Если хеш-таблица содержит 3 различных символа, удалить самый левый символ из хеш-таблицы и сдвинуть указатель left так, чтобы скользящее окно содержало только 2 различных символа. Обновить max_len.

Решение:


func lengthOfLongestSubstringTwoDistinct(_ s: String) -> Int {
let n = s.count
if n < 3 { return n }
let chars = Array(s)
var left = 0
var right = 0

var hashmap = [Character: Int]()

var max_len = 2

while right < n {
hashmap[chars[right]] = right
right += 1
if hashmap.count == 3 {
let del_idx = hashmap.values.min()!
hashmap.removeValue(forKey: chars[del_idx])
left = del_idx + 1
}

max_len = max(max_len, right - left)
}

return max_len
}
  • 👍 3
More from @mobdevelop
  1. Sep 22, 2026Rune: нативный Kubernetes-клиент для macOS Rune помогает быстрее диагностировать кластеры…
  2. Sep 15, 2026🎉 Swift 6.4 уже вышел — и релиз получился заметно шире обычного обновления языка. Главное…
  3. Aug 31, 2026ReactOS 0.4.16 вышла с крупным набором обновлений. Главные изменения: - появился новый гра…
  4. Aug 19, 2026✔️ Апдейт ChatGPT: изолированный контекст в Projects, тесты для проверки знаний и правки д…
  5. Jul 12, 2026Docker Desktop на Mac давно ругают за прожорливость. Apple выкатила свой вариант container…
  6. Jun 23, 2026Apple фактически сделала Docker Desktop необязательным на Mac. И полностью бесплатно. Речь…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →