码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode 5. Longest Palindromic Substring

时间:2016-10-25 02:41:53      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:class   tar   保存   end   并且   bsp   判断   子串   ret   

题目:找出字符串中最长的唯一回文串

两个解法:

一(O^n2):

分析:动态规划,flag[i][j]为true表示下标i,j之间的子串是回文串,保存上次的flag状态,判断此时下标为i,j的字符是否相等,得出此时的flag状态

代码:

public class Solution {
  public String longestPalindrome(String s) {
    int l=s.length();
    if(l<=1){
      return s;
    }
    boolean[][] flag=new boolean[l][l];
    int end=0,start=0,mas=0;
    for(int i=l-1;i>=0;i--){
    for(int j=i;j<l;j++){
      if(s.charAt(i)==s.charAt(j)&&(j-i<=2||flag[i+1][j-1])){

//下标为i,j的字符若相等,并且中间的子串是回文或者i与j之间小于等于2,则此时下标i,j之间的字符串为回文串

        flag[i][j]=true;//标记当前状态
        if(mas<j-i+1){//保存起始点,更新最大长度
          mas=j-i+1;
          start=i;
          end=j;
        }
      }
    }  
    }
    return s.substring(start,end+1);
  }
}

二(O^n):

 

leetcode 5. Longest Palindromic Substring

标签:class   tar   保存   end   并且   bsp   判断   子串   ret   

原文地址:http://www.cnblogs.com/dj3839/p/5995240.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!