地址:https://leetcode-cn.com/problems/longest-palindromic-substring/
思路:
- 思考填表的顺序,把表格画出来,然后思考最优子结构。
Java 代码:
class Solution {
public String longestPalindrome(String s) {
int len = s.length();
if (len < 2) {
return s;
}
boolean[][] dp = new boolean[len][len];
for (int i = 0; i < len; i++) {
dp[i][i] = true;
}
int maxLen = 1;
int start = 0;
for (int right = 1; right < len; right++) {
for (int left = 0; left < right; left++) {
if (s.charAt(left) != s.charAt(right)) {
dp[left][right] = false;
} else {
if (right - left <= 2) {
dp[left][right] = true;
} else {
dp[left][right] = dp[left + 1][right - 1];
}
}
if (dp[left][right]) {
int curLen = right - left + 1;
if (curLen > maxLen) {
maxLen = curLen;
start = left;
}
}
}
}
return s.substring(start, start + maxLen);
}
}