问题描述:给定一个字符串s,找出在这个字符串中的最长回文子串。你可以认为字符串s的最长长度为1000。
Example:
Input: "babad"
Output: "bab"
Note: "aba" is also a valid answer.
Example:
Input: "cbbd"
Output: "bb"
Solution:
public class Solution {
public String longestPalindrome(String s) {
if(s.length()==1 || s.length()==0)
return s;
String res=s.substring(0,1);
int maxLength=1;
//遍历整个字符串的每一点
for(int i=0;i<s.length();i++)
{
int odd=getPalindromeLength(s,i,i);
int even=getPalindromeLength(s,i,i+1);
int length=odd>even ? odd : even;
if(length>maxLength)
{
maxLength=length;
if(maxLength%2==1)
res=s.substring(i-maxLength/2,i+maxLength/2+1);
else
res=s.substring(i-maxLength/2+1,i+maxLength/2+1);
}
}
return res;
}
//从指定相邻两点向字符串两侧查找最长回文子串
public int getPalindromeLength(String s,int start,int end)
{
while(start>=0&&end<s.length()&&s.charAt(start)==s.charAt(end))
{
start--;
end++;
}
return end-start-1;
}
}