Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, and there exists one unique longest palindromic substring.
最直接的想法, 对每一个子串进行判定是否为回文,并且记录回文的最大长度,最后返回最长的回文。
public class Solution {
boolean isPalindromic(String s)
{
int i=0,len=s.length();
while(i<len/2)
{
if(s.charAt(i)!=s.charAt(len-i-1))return false;
i++;
}
return true;
}
public String longestPalindrome(String s) {
int start=0,len=s.length(),end=s.length();
int count=0;
if(len==1)return s;
String res="";
while(start+count<=len)
{
String subs=s.substring(start,end);
if(isPalindromic(subs))
{
if(count<end-start)
{
count=end-start;
res=subs;
}
}
end--;
if(end==start){start=start+1;end=len;}
}
return res;
}
}
之后的想法也比较简单,假设A[i]为回文中间的那个字符(如果A[i]==A[i+1]还需要以A[i],A[i+1]共同为中间字符)之后两边延伸直到不能延伸为止,记录此时回文的长度,如果比已经记录的最大值大,则更新,最后返回结果。