5. Longest Palindromic Substring

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
        }
    }
}

  直接暴力查找,比较好理解;

原文地址:https://www.cnblogs.com/lychnis/p/10604592.html