public String longestPalindrome(String s) {
int right,left;//用的是中心扩散法,此为左右指针
int len=s.length();
int max=0;//记录最大长度
int begin=0,end=0;//记录最长字符串的前后位置
for(int i=0;i<len;i++){
int tmax=1;//若字符串不为空,回文串初始长度记为1
left=i-1;
right=i+1;//初始化左右指针
while(left>=0&&s.charAt(left)==s.charAt(i)){//左遍历,寻找相等字符
left--;
tmax++;
}
while(right<len&&s.charAt(right)==s.charAt(i)){//右遍历,寻找相等字符
right++;
tmax++;
}
while(right<len&&left>=0&&s.charAt(right)==s.charAt(left)){//左右同时遍历
right++;
left--;
tmax+=2;
}
if(max<tmax){
max=tmax;
begin=left;
end=right;
}
}
return null != s ? s.substring(begin+1, end) : null;//截取字符串并返回
}
这次写的比较顺利,没有出现太大问题。还有一个动态规划方法,以后有空补上。