国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Leetcode 516 python 解題報告

2019-11-08 01:42:07
字體:
來源:轉載
供稿:網友

python代碼:

class Solution(object):    def longestPalindromeSubseq(self, s):        """        :type s: str        :rtype: int        """        dp = [[0 for i in range(len(s))] for i in range(len(s))]        for i in range(len(s)):            dp[i][i] = 1        for i in range(1,len(s)):            for j in range(i-1,-1,-1):                if s[i] == s[j]:                    dp[j][i] = 2+dp[j+1][i-1]                else:                    dp[j][i]=max(dp[j+1][i],dp[j][i-1])        return dp[0][len(s)-1]結果Time limit exceeded,思路:dp[i][j]代表從i到j的子串中,最大的回文子串長度。dp[i][i],只有一個字母,一定是回文且長度為1。從dp[0][1]開始遍歷,dp[2][1],dp[2][0],dp[3][2],dp[3][1],dp[3][0]的順序遍歷,如果si和sj相等,那j到i間最短的回文子串也至少是2,再加上j+1到i-1之間的回文子串,可以拼成一個新的回文子串,因此長度也要相加。如果si和sj不相等,則dp[j][i]等于去掉si或sj后能獲得的最長回文子串的長度。

參考http://www.cnblogs.com/93scarlett/p/6385602.html后改為C++代碼,成功。

AC代碼:

class Solution {public:    int longestPalindromeSubseq(string s) {        int n = s.size();        int dp[n][n]={0};       for(int i = 0; i < n; i++){            dp[i][i] = 1;        }        for(int j = 1; j < n; j++){//j從1開始            //for(int i = 0; i < j; i++){            for(int i = j - 1; i >= 0; i--){                //if(s[i] == s[j] && i + 1 <= j - 1){                if(s[i] == s[j]){                    dp[i][j] = 2 + dp[i + 1][j - 1];                }else{                    dp[i][j] = max(dp[i + 1][j], dp[i][j - 1]);                }            }        }        return dp[0][n - 1];    }};


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 苍山县| 上杭县| 神木县| 南京市| 叙永县| 呼伦贝尔市| 水城县| 邛崃市| 凤台县| 南澳县| 济南市| 墨江| 盐源县| 长顺县| 赣州市| 衡水市| 赞皇县| 育儿| 旬邑县| 江陵县| 东丽区| 奉节县| 阿巴嘎旗| 类乌齐县| 舞阳县| 渭南市| 榆林市| 新田县| 大渡口区| 古浪县| 行唐县| 格尔木市| 杂多县| 兴国县| 泾阳县| 温州市| 广安市| 建昌县| 贵定县| 旬邑县| 堆龙德庆县|