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

leetcode 5. Longest Palindromic Substring

时间:2019-01-26 21:38:37      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:solution   i+1   计算   长度   span   etc   回文字符串   中心   substring   

Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.

Example 1:

Input: "babad"
Output: "bab"
Note: "aba" is also a valid answer.

Example 2:

Input: "cbbd"
Output: "bb"

 

还是用DP来递归,抓住回文字符串的“中心”(对称轴)来考虑,一共可能有2n-1个对称轴。单独写一个expand函数来计算该对称轴对应的最大回文字符串长度。

expand的思想就是:当l,r两个字符相等时,就可认为l-1到r+1之间的也是回文字符串。

class Solution {
    public String longestPalindrome(String s) {
        if(s == null || s.length() == 0) return "";
        int start = 0, end = 0;
        for(int i=0; i<s.length();i++) {
            int len1 = expand(s,i,i);
            int len2 = expand(s,i,i+1);
            int len = Math.max(len1,len2);
            if(len > end - start){
                start = i - (len-1)/2;
                end = i + len/2;
            }
        }
        return s.substring(start, end+1); //记住这个用法(直接取子集)
    }
    
    public int expand(String s, int l, int r){
        while(l>=0 && r<s.length() && s.charAt(l)==s.charAt(r)) {
            l--;
            r++;
        }
        return r-l-1;
    }
}

 

leetcode 5. Longest Palindromic Substring

标签:solution   i+1   计算   长度   span   etc   回文字符串   中心   substring   

原文地址:https://www.cnblogs.com/jamieliu/p/10324896.html

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