寻找最长回文子串(Palindromic Substring)的一种简单的Java解法

来源:互联网 发布:mac新建文本文档 编辑:程序博客网 时间:2024/04/28 19:57

回文字符串,指的是形式如同"abcba"或是"abccba“形式的字符串。

那么如何在一串给定的字符串中寻找其中最长的回文子串呢?

可以用延伸的思想来寻找,即先找最短的字符串如"a"、"bb"等,在这些字符串基础上进行延伸扩展,若是找到的符合要求的子串长度大于已找到的回文子串的最大长度,则取而代之,同时记录该子串的第一个字符的下标。

通过这种思想将字符串遍历执行即可找到最大回文子串。

public class PalindromicSubstring {    private int start,maxLength;    public String longestPalindrome(String s) {    if(s.length()<2)    return s;        for(int i=0;i<s.length()-1;i++){            extendPali(s,i,i);            extendPali(s,i,i+1);        }        return s.substring(start,start+maxLength);    }    public void extendPali(String s,int i,int j){        while(i>=0&&j<s.length()&&s.charAt(i)==s.charAt(j)){            i--;            j++;        }        if(maxLength<j-i-1){            start=i+1;            maxLength=j-i-1;        }    }}


阅读全文
0 0