最长回文子串

来源:互联网 发布:淘宝客服找不到人 编辑:程序博客网 时间:2024/04/28 09:19

解决思路:
动态规划,中心向两边扩散:
“aba”,i和j指向同一个b,然后向两边扩散;
“abba”,i指向左边的b,j指向右边的b,然后向两边扩散。

public String longestPalindrome(String s) {    int len = 0,st=0,end=0;    for(int i=0;i<s.length();i++){        int len1=expandAroundCenter(s,i,i);        int len2=expandAroundCenter(s,i,i+1);        len = Math.max(len1,len2);        if(len > end - st){            st = i-(len-1)/2;// 0 - 1 = -1            end = i+len/2;        }    }    return s.substring(st,end+1);}public int expandAroundCenter(String s,int left, int right){    int i = left,j = right;    while(i>=0 && j<s.length() && s.charAt(i)==s.charAt(j)){            i--;j++;    }    return j-i-1;}
原创粉丝点击