5. Longest Palindromic Substring
class Solution {
public String longestPalindrome(String s) {
if (s.length() < 2) {
return s;
}
boolean[][] isPalindrome = new boolean[s.length()][s.length()];
String longest = s.substring(0, 1);
for (int i = 0; i < s.length(); i++) {
isPalindrome[i][i] = true;
}
for (int i = 0; i < s.length(); i++) {
for (int j = 0; j < i; j++) {
isPalindrome[j][i] = s.charAt(j) == s.charAt(i) && ( i - j <= 2 || isPalindrome[j + 1][i - 1]);
if (isPalindrome[j][i] && i - j + 1 > longest.length()) {
longest = s.substring(j, i + 1);
}
}
}
return longest;
}
}