首页 > 其他 > 详细

#Leetcode# 5. Longest Palindromic Substring

时间:2018-11-19 15:03:52      阅读:181      评论:0      收藏:0      [点我收藏+]

https://leetcode.com/problems/longest-palindromic-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"

题解:$Manacher‘s Algorithm$ 马拉车算法 用 $O(n)$ 的时间复杂度来判断最长回文子串的长度

      详解:https://www.cnblogs.com/grandyang/p/4475985.html

代码:

class Solution {
public:
    string longestPalindrome(string s) {
        string t = "$#";
        for(int i = 0; i < s.length(); i ++) {
            t += s[i];
            t += "#";
        }
        vector<int> p(t.size(), 0);
        int mx = 0, id = 0, resLen = 0, resCenter = 0;
        for(int i = 0; i < t.size(); i ++) {
            p[i] = mx > i ? min(p[2 * id - i], mx - i) : 1;
            while (t[i + p[i]] == t[i - p[i]]) ++p[i];
            if (mx < i + p[i]) {
                mx = i + p[i];
                id = i;
            }
            if (resLen < p[i]) {
                resLen = p[i];
                resCenter = i;
            }
        }
        return s.substr((resCenter - resLen) / 2, resLen - 1);
    }
};

  

#Leetcode# 5. Longest Palindromic Substring

原文:https://www.cnblogs.com/zlrrrr/p/9983095.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!