TGViewer
Java | LeetCode Java | LeetCode @easy_java_task · 6.43K subscribers
Post #1531 796
Задача: 1062. Longest Repeating Substring
Сложность: medium

Дана строка s. Вернуть длину самой длинной повторяющейся подстроки. Если повторяющаяся подстрока отсутствует, вернуть 0.

Пример:
Input: s = "abcd"
Output: 0
Explanation: There is no repeating substring.


👨‍💻 Алгоритм:

1⃣Перемещайте скользящее окно длиной L по строке длиной N.

2⃣Проверьте, находится ли строка в скользящем окне в хэш-наборе уже виденных строк. Если да, то повторяющаяся подстрока находится здесь. Если нет, сохраните строку из скользящего окна в хэш-наборе.

3⃣Очевидный недостаток этого подхода — большое потребление памяти в случае длинных строк.

😎 Решение:
class Solution {
public int search(int L, int n, String S) {
HashSet<String> seen = new HashSet<>();
for (int start = 0; start < n - L + 1; ++start) {
String tmp = S.substring(start, start + L);
if (seen.contains(tmp)) return start;
seen.add(tmp);
}
return -1;
}

public int longestRepeatingSubstring(String S) {
int n = S.length();
int left = 1, right = n;
while (left <= right) {
int L = left + (right - left) / 2;
if (search(L, n, S) != -1) {
left = L + 1;
} else {
right = L - 1;
}
}
return left - 1;
}
}


Ставь 👍 и забирай 📚 Базу знаний
  • 💊 1
More from @easy_java_task
  1. Oct 16, 2026Post #2300
  2. Oct 15, 2026Задача: 229. Majority Element II Сложность: medium Дан массив целых чисел размера n, найди…
  3. Oct 14, 2026Post #2298
  4. Oct 14, 2026Задача: 1332. Remove Palindromic Subsequences Сложность: easy Вам дана строка s, состоящая…
  5. Oct 13, 2026Задача: 1120. Maximum Average Subtree Сложность: medium Дан корень бинарного дерева. Верни…
  6. Oct 12, 2026Задача: 1413. Minimum Value to Get Positive Step by Step Sum Сложность: easy Дан массив це…
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 →