#5 Longest Palindromic Substring [M]

Description

tags: String, Dynamic Programming

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"

My solution

(Expand Around Center)

class Solution {
public:
    string longestPalindrome(string s) {
        int n = s.size();
        int maxLen = 0;
        string ret;
        for (int i=0; i<n; i++) {
            int l = i, r = i;
            while (l > 0 && s[l-1] == s[i]) l--;
            while (r < n-1 && s[r+1] == s[i]) r++;
            while (l > 0 && r < n-1 && s[l-1] == s[r+1]) {
                l--;
                r++;
            }
            if ((r - l + 1) > maxLen) {
                maxLen = (r - l + 1);
                ret = s.substr(l, maxLen);
            }
        }
        return ret;
    }
};

Solution

Approach 1: Longest Common Substring
Approach 2: Brute Force

Time: O(n^3)
Space: O(1)

Approach 3: Dynamic Programming

Time: O(n^2)
Space: O(n^2)

Approach 4: Expand Around Center

Time: O(n^2)
Space: O(1)

Approach 5: Manacher's Algorithm

Time: O(n)
Space: O(n)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容