Question
Given a string S, find the longest palindromic substring in S. You may assume that the maximum length ofS is 1000, and there exists one unique longest palindromic substring.
Example
Input:aabac;
Output:aba.
Solution
public class Solution {
public String longestPalindrome(String s) {
int max=0,mid=0,a=0,b=0;
if(s.length()==1) //若字符串长度为1,则直接返回字符串
return s;
for(int i=0;i<s.length();i++){
int temp=0,temp1=-1,temp2=0;
for(int j=0;j<s.length();j++){ //判断字符串中aba格式的长度
if(i-j>=0&&i+j<s.length()&&(s.charAt(i-j)==s.charAt(i+j)))
temp1+=1;
else
break;
}
for(int j=0;j<s.length();j++){ //判断字符串中aa格式的长度
if(i-j>=0&&i+j+1<s.length()&&s.charAt(i-j)==s.charAt(i+j+1))
temp2+=1;
else
break;
}
if(temp1>=temp2&&temp1>=max){ //若第一种格式的长度大于或等于第二种,则用第一种
max=temp1;
mid=i;
a=temp1;
b=temp2;
}
else if(temp1<temp2&&temp2>max){ //否则采用第二种
max=temp2;
mid=i;
a=temp1;
b=temp2;
}
}
if(a>=b)
return s.substring(mid-max, mid+max+1);
else
return s.substring(mid-max+1, mid+max+1);
}
}