[LeetCode] Longest Palindromic Substring [14]

題目

Given a string S, find the longest palindromic substring in S. You may assume that the maximum length ofS is 1000, and there exists one unique longest palindromic substring.

原題鏈接

解題思路

最長迴文字串,相信做過Palindrome Partitioning II 這個題的同學應該可以很快做出來。沒錯,這個題還可以使用動態規劃方法得到一個時間複雜度爲O(n^2)的解法,當然如果你想要更好的時間複雜度的算法也是有的。好的,我們先來看看時間複雜度爲O(n^2)的算法。

代碼實現

代碼一--動態規劃O(n^2)

相信如果你在網上看過了別人的算法,你會發現我的算法是最簡潔的。哈哈,這個題需要注意的是如果你用慣了vector的話,你這裏肯定會得到超時的提示。

class Solution {
public:
    string longestPalindrome(string s) {
        int n = s.size();
        if(n<=1) return s;
        bool dp[1000][1000]= {false,false};
        int begin =0, max = 0;
        for(int i=n-1; i>=0; --i){
            for(int j=i; j<n; ++j){
                if(s[i] != s[j]) continue;
                if(j-i<2 || dp[i+1][j-1]==true){
                    dp[i][j] = true;
                    if(j-i > max){
                        begin = i;
                        max = j-i;
                    }
                }
            }
        }
        
        return s.substr(begin, max+1);
    }
};
代碼二--時間複雜度爲O(n)的解法

這個我專門有篇博客介紹《Longest Palindromic Substring-----最長迴文子串 》,點擊閱讀。


如果你覺得本篇對你有收穫,請幫頂。
另外,我開通了微信公衆號--分享技術之美,我會不定期的分享一些我學習的東西.
你可以搜索公衆號:swalge 或者掃描下方二維碼關注我

(轉載文章請註明出處: http://blog.csdn.net/swagle/article/details/28983957 )

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章