Leetcode 5 最長回文字串 學習感悟

2021-10-09 20:27:13 字數 669 閱讀 1013

首先第一點需要明確動態規劃的狀態轉移方程:

dp[i][j] 含義為 陣列中下標 i 到 下標  j 是否為回文串,若為回文串dp[i][j]=1 ,若不為回文串dp[i][j]=0

(1)dp[i][i]=1; //邊界1當處於單字母時候 ,本身必為回文串

(2)dp[i][i+1]=1 (  s[i]==s[i+1]) //邊界2當處於雙字母時候,左右相等則為回文字串

(3)   dp[i][j]=1  (s[i]==s[j]&&dp[i+1][j-1])   //正常的區域判斷條件

第一層的迴圈為字串的個數 l 由 1 至 s.length() 

內層迴圈為子串的起始點,結束條件為起始點加字串長度越界

第一層時候直接將第乙個邊界情況dp[i][i] 完成

第二層時候直接將第二個邊界情況dp[i][i+1]完成

其他情形將大問題轉移為小問題利用dp陣列求解

每局利用dp[i][j]的狀態和長度來判斷是否 超過最長串,若串長超過則更新。

class solution 

else if (longe == 2)

else

if (dp[i][j] && longe > ans.size()) }}

return ans;

}};

LeetCode5 最長回文串

include include include include include include using namespace std ifndef solution h define solution h 思路 從回文串的對稱點開始,依次向左向右比較,不相同的時候停止遍歷,直到找出最大的長度的回文...

LeetCode 5 最長回文串

目錄 1.題目描述 2.解決方案 給定乙個字串s,找到s中最長的回文子串。你可以假設s的最大長度為 1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb 方法一 動態規劃 演算法 用二位陣列來標記字串從下標 i 到下標 j 是否為回...

Leetcode 5 最長回文串

解題思想 1.中心擴充套件法 從字串中心分別往左右兩端移動,while l 0 r易混點 回文串的起始值 i 迴圈中回文串的長度 1 2 看不懂找數帶入即可 class solution def longestpalindrome self,s str str n len s defgetlen l...