class Solution {
int len;
int start;
public String longestPalindrome(String s) {
if(s.length()<2)return s;
len=1;
start=0;
for(int i=0;i<s.length()-1;++i)
{
verify(s,i,i);
verify(s,i,i+1);
}
return s.substring(start,start+len);
}
void verify(String s, int i,int j)
{
while(i>=0&&j<s.length()&&s.charAt(i)==s.charAt(j))
{
--i;
++j;
}
++i; //上面的循环跳出时,ij的值已经变成非法了,所以要做还原,当然为了省事也可以在下面的代码直接计算,但是有点难以理解
--j;
int curlen=j-i+1; //如果上面两行不要这里就是 j-1 -i-1 +1 = j-i-1
if(curlen>len)
{
len=curlen;
start=i; //同理如果上面两行没有就是i-1
}
}
}
直接暴力查找,比较好理解;
浙公网安备 33010602011771号