например, "ccddcc" в строке "abaccddccefe"
Я думал о решении, но он работает в O (n ^ 2) времени
Algo 1:
Шаги: Его метод грубой силы
- Имейте 2 для петель
для я = 1 до я меньше, чем array.length -1
для j = я + 1 - j меньше, чем array.length - Таким образом вы можете получить подстроку любой возможной комбинации из массива
- Имейте функцию палиндрома, которая проверяет, является ли строка палиндром
- поэтому для каждой подстроки (i, j) вызовите эту функцию, если она является палиндромом, сохраните ее в строковой переменной
- Если вы найдете следующую подстроку palindrome и если она больше текущей, замените ее на текущую.
- Наконец, ваша строковая переменная будет иметь ответ
Вопросы: 1. Этот алгоритм проходит в O (n ^ 2) раз.
Algo 2:
- Отмените строку и сохраните ее в другом массиве
- Теперь найдите самую большую совпадающую подстроку между массивом
- Но это тоже работает в O (n ^ 2) времени
Можете ли вы, ребята, подумать об алго, который работает в лучшем случае. Если возможно O (n) время