Prynik
@Prynik

Как найти самую длинную подстроку в строке которая встречается ее менее 2 раз?

Есть строка, как в ней найти подстроку, которая встречается не меньше 2х раз и является самой длинной из таких подстрок.

Готовое решение не прошу, не могу понять алгоритм поиска.
  • Вопрос задан
  • 809 просмотров
Пригласить эксперта
Ответы на вопрос 2
xez
@xez Куратор тега Java
TL Junior Roo
1. Делим длину строки на 2 - получаем первый возможный вариант длины подстроки.
2. В цикле, потихоньку уменьшая длину подстроки, ищем
а. Возможные подстроки.
б. Частоту их появления в исходной строке (например, складывая в Map).

Пример:
Строка: aabcdaa
Шаг первый: возможная длина 7/2 -> три символа.
Шаг второй: выбираем строки по три символа -> aab, abc, bcd, daa -> нет повторений.
Шаг третий: выбираем строки по два символа -> aa, ab, bc, cd, aa -> нашлась строка aa - наиболее длинная, которая встречается 2 раза.
Ответ написан
Therapyx
@Therapyx
Data Science
хм, тут зависит еще от вводных. Если не прибегать к определенным фишкам языков, а абстрагироваться тем, что есть почти везде, то я бы скорее всего делал так:
1) Сделал бы мэп, хешмэп и (co.) в виде "String, int", где стринг это будет часть разбитой подстроки, а инт - это каунтер
2) Брал бы подстроку и разбивал ее почастично, добавляя в эту структуру данных с инициальным каунтером 1, но
2.2) Добавляя делать проверку, есть ли такой паттерн уже в ней? если да, то увеличить каунтер
2.3) Если нету, то добавить в новый индекс с базовым каунтером.
3) в самом конце пробегаешься по структуре данных, где каунтер 2 и выше, вычисляя приэтом максимум из кол-ва символов в подстроках
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
01 мая 2024, в 02:11
5000 руб./за проект
01 мая 2024, в 00:29
2000 руб./за проект
01 мая 2024, в 00:20
15000 руб./за проект