int n = s.length();
boolean[][] dp = new boolean[n][n];
String ans = "";
for (int L = 0; L < n; ++L) {
for (int i = 0; i + L < n; ++i) {
int j = i + L;
if (L == 0) {
dp[i][j] = true;
} else if (L == 1) {
dp[i][j] = (s.charAt(i) == s.charAt(j));
} else {
dp[i][j] = (s.charAt(i) == s.charAt(j) && dp[i + 1][j - 1]);
}
if (dp[i][j] && L + 1 > ans.length()) {
ans = s.substring(i, i + L + 1);
}
}
}
return ans;
有趣的是,我用的两重for循环,把距离变为j-i就不通过了
不清楚为什么。