题解 | #最长回文子串#
最长回文子串
https://www.nowcoder.com/practice/b4525d1d84934cf280439aeecc36f4af
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param A string字符串
* @return int整型
*/
public static int maxlen=1;
public int getLongestPalindrome1 (String A) {
if(A.length()<2){
return 1;
}
fun(A,0,A.length()-1);
return maxlen;
// write code here
}
public void fun(String str,int left,int right){
int l=left;
int r=right;
if(r-l+1<maxlen)
return;
label:while(l>=0&&r<=str.length()-1&&l<r){
if(str.charAt(l)!=str.charAt(r)){
break label;
}else{
l++;
r--;
}
}
if(l<r){
fun(str,left+1,right);
fun(str,left,right-1);
}else{
maxlen=Math.max(maxlen,right-left+1);
}
}
public int getLongestPalindrome (String A){
for(int i=0;i<A.length()-1;i++){
for(int j=i+1;j<=A.length()-1;j++){
if(j-i+1>maxlen&&fun1(A,i,j)){
maxlen=j-i+1;
}
}
}
return maxlen;
}
public boolean fun1(String str,int left,int right){
while(left<=right){
if(str.charAt(left)!=str.charAt(right)){
return false;
}
left++;
right--;
}
return true;
}
}
查看2道真题和解析