Динамическое программирование [Самая длинная палиндромная подстрока]JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Динамическое программирование [Самая длинная палиндромная подстрока]

Сообщение Anonymous »

Я решил эту проблему с помощью рекурсии и мемоизации, но не смог найти итеративного решения. Может ли кто-нибудь помочь мне преобразовать приведенное ниже рекурсивное решение в итеративное решение с пошаговым объяснением??? Заранее спасибо.
class Solution {
Boolean[][] memo;
public String longestPalindrome(String s) {
int n = s.length();
memo = new Boolean[n][n];

return helper(s);
}

public boolean isPal(String s,int st,int en) {
if (st >= en) {
return true;
}

if (memo[st][en] != null) {
return memo[st][en];
}

if (s.charAt(st) == s.charAt(en) && isPal(s,st + 1,en - 1)) {
memo[st][en] = true;
return true;
}

return false;
}

public String helper(String s) {

int st = -1;
int maxLen = 0;
for (int i = 0;i

Подробнее здесь: https://stackoverflow.com/questions/779 ... -substring
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»