最长的回文子串,是连续的。如ababd,输出aba或者bab,又比如abbc,则输出bb
常见算法:动态规划,或者马拉车算法
package Array;
/**
* Demo class
*
* @author
* @date 2022/7/6
* 最长回文子串 动态规划 马拉车算法
* 如,aba,输出aba,
* abbc,输出bb
*/
public class LongestHuiwenSubString {
public static String longestHuiwenSubString(String s) {
if (s.length() < 2) {
return s;
}
int maxLength = 1;
int n = s.length(), start = 0;
boolean[][] dp = new boolean[n][n];
for (int right = 1; right < n; right++) {
for (int left = 0; left < right; left++) {
if (s.charAt(left) != s.charAt(right)) {
continue;
}
if (left == right) {
dp[left][right] = true;
} else if (right - left <= 2) {
dp[left][right] = true;
} else {
dp[left][right] = s.charAt(left) == s.charAt(right) && dp[left + 1][right - 1];
}
if (dp[left][right] && right - left + 1 > maxLength) {
maxLength = right - left + 1;
start = left;
}
}
}
return s.substring(start, start + maxLength);
}
public static void main(String[] args) {
String s = "babad";
System.out.println(longestHuiwenSubString(s));
}
}
参考文献:最长回文子串