TGViewer
Go tests Go tests @golangtests · 7.82K subscribers
Post #789 3.38K
🧩 Алгоритмическая задача: "Почти уникальные подстроки"

📜 Условие:

Дана строка s длиной до 2⋅10⁵, содержащая только строчные буквы латинского алфавита.
Нужно найти максимальную длину `L`, такую что существует строка длины `L`, встречающаяся всего один раз в s.

🔍 Пример:


s = "ababcab"
Уникальные подстроки:
длины 1: "c" ✅
длины 2: "ca" ✅
длины 3: "cab" ✅
длины 4: "abca" ✅
Но, например, "ab" встречается дважды.

Ответ: 4


⚠️ Ограничения:

- Длина строки: до 200000
- Время — не более 1 секунды
- Нельзя использовать map[string]int наивно — будет слишком медленно
- Решение должно работать за O(n log n) или O(n) с префикс-хэшами

💡 Подсказки:

- Используй **rolling hash (polynomial hashing)** — префиксный хэш + бинарный поиск по длине `L`.
- Сначала бинарный поиск по длине: `left = 1`, `right = len(s)`
- Для каждой длины — собрать все хэши и проверить, есть ли хэш с ровно одним вхождением
- Возможна коллизия — используйте **двойной хэш** или `uint64` с Mersenne prime

✅ Что проверяет задача:

- Умение применять двухфазные алгоритмы (бинарный поиск + проверка условия)
- Навыки работы с rolling hash / префикс-хэшами
- Знание тонкостей коллизий и оптимизации по памяти

Пиши решение в комментариях
  • 🔥 5
  • 👍 3
  • ❤ 2
  • 👎 1
  • 😁 1
More from @golangtests
  1. Sep 26, 2026Nil-интерфейс в Go: почему err == nil выдаёт false? Nil-интерфейс в Go ломает даже опытных…
  2. Sep 23, 2026Задача по Go: `select` и побочные эффекты Что выведет программа? package main import "fmt"…
  3. Sep 23, 2026Не застревайте в прошлом — учитесь новым навыкам и ИИ Чтобы успевать за требованиями рынка…
  4. Sep 13, 2026👣 Задача на Go 1.27: concurrent job scheduler с generic methods Нужно реализовать библиот…
  5. Sep 13, 2026🔥 Хочешь расти в IT быстрее остальных? Перестань учиться в одиночку Можно годами смотреть…
  6. Sep 2, 2026👣 Go 1.27: почему две разные closure внезапно могут иметь одинаковый адрес функции? Что в…
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 →