package com.example.leetcodedemo;
//最长回文字符串类
public class LongAroundStr {
public static void main(String[] args) {
center("babad");
}
private static String dynamicguihua(String s){
if(s.length() <= 1){
return s;
}
int length = s.length();
String longstr = s.substring(0,1);
int longleng = 1;
boolean[][] dy = new boolean[length][length];
dy[0][0] = true;
for(int r = 1 ; r < s.length() ; r++ ){
for(int l = 0 ; l < r ; l++){
if(s.charAt(r) == s.charAt(l) && (r-l<=2 || dy[l+1][r-1])){
dy[l][r]=true;
int len = r-l+1;
if(len>longleng){
longstr = s.substring(l,r+1);
longleng = len;
}
}
}
}
return longstr;
}
//中心递推法
private static String center(String s){
if(s.length() <= 1){
return s;
}
int length = 0;
String longstr = s.substring(0,1);
for(int i = 0 ; i < s.length() ; i++){
String str1 = loadAroudStr(s,i,i);
String str2 = loadAroudStr(s,i,i+1);
if(str1.length() > length){
longstr = str1;
length = str1.length();
}
if(str2.length() > length){
longstr = str2;
length = str2.length();
}
}
return longstr;
}
private static String loadAroudStr(String s , int i ,int j){
while((i>=0 && j<s.length()) && s.charAt(i) == s.charAt(j)){
i--;
j++;
}
return s.substring(i+1,j);
}
}