LeetCode修炼——最长回文子串
题目描述
解题思路
根据题目的描述,可以分为两种情况,回文数为单数,回文数为偶数。
首先,当回文数为单数的情况,只需要以每个字符为中心,向两边确认是否相等。
当回文数为偶数的情况,处理方法就是验证下一个字符是否与当前相同。如果相等,就以相等的字符串(不是字符,是字符串)为中心向两边验证。献上Java代码。
class Solution {
public String longestPalindrome(String s) {
if(s.length()!=0){
int x;int len=0; int i=0,j=0;
for(x=0;x<s.length();x++){
int len2=1;
int start=0,end=0;
while((x<s.length()-1-end)&&(s.charAt(x)==s.charAt(x+end+1))){
len2++;
end++;
}
while((start+x)>=0&&(end+x<=s.length()-1)&&s.charAt(start+x)==s.charAt(end+x)){
len2=len2+2;
start--;
end++;
}
if(len2>len){
i=start+x;
j=end+x;
len=len2;
}
}
return s.substring(i+1,j);
}else{
return "";
}
}
}
测试结果
如果有疑问或更好的idea,欢迎交流讨论,谢谢~