наприклад, "ccddcc" у рядку "abaccddccefe"
Я думав про рішення, але воно працює в O (n ^ 2) час
Algo 1:
Етапи: Це метод грубої сили
- Мати 2 для циклів
для i = 1 до i менше, ніж масив. Довжина -1
для j = i + 1 до j менше, ніж array.length - Таким чином ви можете отримати підрядку будь-якої можливої комбінації з масиву
- Майте функцію palindrome, яка перевіряє, чи є рядок паліндром
- тому для кожного підрядка (i, j) викликайте цю функцію, якщо це паліндром, збережіть її в рядковій змінній
- Якщо ви знайдете наступну підрядку паліндром і якщо вона більша за поточну, замініть її на поточну.
- Нарешті, ваша змінна строка матиме відповідь
Питання: 1. Цей алго працює в О (n ^ 2) час.
Algo 2:
- Переверніть рядок і збережіть його в різних масивах
- Тепер знайдіть найбільшу відповідну підрядку між обома масивами
- Але це теж працює в O (n ^ 2) час
Ви можете подумати про альго, яке працює в кращий час. По можливості O (n) час
O(n^2)
отримати підряди *,O(n)
щоб перевірити, чи є вони паліндромами, загаломO(n^3)
?