Longest Palindromic Substring

来源:互联网 发布:数据质量标准 编辑:程序博客网 时间:2024/04/29 08:06
public class Solution {    public String longestPalindrome(String s) {        char[] cc=s.toCharArray();        int[][] dp=new int[cc.length+1][cc.length+1];        int maxlen=0;        int maxstart=0;        int maxend=0;        for(int i=cc.length-1;i>=0;i--)            for(int j=i;j<cc.length;j++)                if(cc[i]==cc[j]&&(j-i<2||dp[i+1][j-1]==1)){                    dp[i][j]=1;                    if(maxlen<j-i){                        maxstart=i;                        maxend=j;                        maxlen=j-i;                    }                }        return s.substring(maxstart,maxend+1);    }}

上为仿照palindrome partition 代码版本,下为bottom up 版本速度比上面的快一倍


public String longestPalindrome(String s) {      char[] cc=s.toCharArray();      String res="";      int maxlen=-1;      for(int i=0;i<cc.length*2;i++){          if(i/2-maxlen<0||i/2+maxlen>=cc.length)              continue;          int j=0;          if(i%2==1)          j=1;          for(;j<=cc.length;j=j+2){              if(i-j<0||(i+j)/2>=cc.length)                  break;              if(cc[(i-j)/2]!=cc[(i+j)/2])                  break;              if(maxlen*2<j){                  maxlen=j/2;                  res=s.substring((i-j)/2,(i+j)/2+1);              }          }      }      return res;  }



0 0
原创粉丝点击