https://leetcode-cn.com/problems/longest-palindromic-substring/
class Solution {
public String longestPalindrome(String s) {
if (s.length() < 1) {
return s;
}
int[][] map = new int[s.length()][s.length()];
for (int i = 0; i < s.length(); i++) {
map[i][i] = 1;
}
char[] sChar = s.toCharArray();
int maxLength = 1;
int maxL = 0;
int maxR = 0;
for (int lenght = 2; lenght <= s.length(); lenght++) {
for (int i = lenght - 1; i < s.length(); i++) {
int k = i - lenght + 1;
char char2 = sChar[k];
char char1 = sChar[i];
String string = s.substring(k, i + 1);
if (sChar[k] == sChar[i] && (k + 1 > i - 1 || map[k + 1][i - 1] != 0)) {
if ((map[k][i] = map[k + 1][i - 1] + 2) > maxLength) {
maxL = k;
maxR = i;
}
}
}
}
return s.substring(maxL, maxR + 1);
}
}
本文详细解析了LeetCode上一道经典题目:寻找字符串中最长的回文子串。通过动态规划的方法,算法首先初始化长度为1的所有字符为回文串,然后逐步扩大字符串长度,检查并更新最长回文子串。最终返回找到的最长回文子串。
540

被折叠的 条评论
为什么被折叠?



