public String longestPalindrome(String s){ if (s == null || s.length() < 2) { return s; } int strLen = s.length(); int maxStart = 0; //最长回文串的起点 int maxEnd = 0; //最长回文串的终点 int maxLen = 1; //最长回文串的长度
boolean[][] dp = newboolean[strLen][strLen];
for (int r = 1; r < strLen; r++) { for (int l = 0; l < r; l++) { if (s.charAt(l) == s.charAt(r) && (r - l <= 2 || dp[l + 1][r - 1])) { dp[l][r] = true;//r-l<=2表示字符串只有2个或3个字符。 if (r - l + 1 > maxLen) {//更新最大长度 maxLen = r - l + 1; maxStart = l; maxEnd = r;