对于一个字符串,请设计一个高效算法,计算其中最长回文子串的长度。
给定字符串A以及它的长度n,请返回最长回文子串的长度。
测试样例:"abc1234321ab",12
返回:7‘
import java.util.*;
//从中间
public class Palindrome {
public int getLongestPalindrome(String A, int n) {
int max=0;
for(int i=0;i<n-1;i++){
int left=i;
int right=i;
while(left-1>=0 && right+1<n && A.charAt(left-1)==A.charAt(right+1)){
left--;
right++;
}
max=Math.max(max,right-left+1);
left=i;
right=i+1;//为啥只有right+1
while(left>=0 && right<n && A.charAt(left)==A.charAt(right)){
left--;
right++;
}
max=Math.max(max,right-left-1);
}
return max;
}
}
//从中间
public class Palindrome {
public int getLongestPalindrome(String A, int n) {
int max=0;
for(int i=0;i<n-1;i++){
int left=i;
int right=i;
while(left-1>=0 && right+1<n && A.charAt(left-1)==A.charAt(right+1)){
left--;
right++;
}
max=Math.max(max,right-left+1);
left=i;
right=i+1;//为啥只有right+1
while(left>=0 && right<n && A.charAt(left)==A.charAt(right)){
left--;
right++;
}
max=Math.max(max,right-left-1);
}
return max;
}
}