LeetCode解題方法2 動態規劃求回文

2021-10-02 21:46:56 字數 1314 閱讀 2493

最長回文子串

題目

給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為 1000。

示例 1:

輸入: 「babad」

輸出: 「bab」

注意: 「aba」 也是乙個有效答案。

示例 2:

輸入: 「cbbd」

輸出: 「bb」

狀態轉移陣列

dp[i][j]=0表示從j到i的字串不為回文字串

dp[i][j]=1表示從j到i的字串為回文字串

狀態轉移方程

1.當j==i

dp[i][j]一定為1

2.當j 1

dp[i][j] = dp[i - 1][j + 1]

其餘情況

dp[i][j] = 0

**

#define is_hui_wen 1

#define is_not_hui_wen 0

char

*longestpalindrome

(char

* s)

;char

* str;

int i, j;

int begin, end;

int len =

strlen

(s);

memset

(lp,0,

(1005

*1005

*sizeof

(char))

);if(len <2)

begin = end =0;

for(i =

0; i < len; i++)if

(((i - j)!=1

)&&(lp[i -1]

[j +1]

!= is_hui_wen)

) lp[i]

[j]= is_hui_wen;if(

(i - j)

>

(end - begin))}

} str =

(char*)

malloc

((end - begin +2)

*sizeof

(char))

;strncpy

(str, s + begin, end - begin +1)

; str[end - begin +1]

='\0'

;return

(char*)

&str[0]

;}

LeetCode解題方法5 動態規劃求距離問題

簡單距離問題 72 編輯距離 困難 採用動態規劃思想,求出轉移方程dp i j bool ismatch char s,char p dp 0 0 true for i 0 i len2 i for i 0 i len1 i if p j j 0 else return dp len1 len2 題...

LeetCode解題方法之 空指標

203.remove linked list elements 1.這樣可以處理空鍊錶特殊情況,頭指標為要刪除的值的特殊情況 使用空指標p在這裡的好處在於,1.p儲存了頭結點,2.而最開始pre和p指向了同乙個節點物件,這樣如果首節點是空節點或等於val時,可以直接進行操作,因此首節點也可以當做普通...

LeetCode解題方法9 狀態機

有效數字 利用狀態機來解題 驗證給定的字串是否可以解釋為十進位制數字。例如 0 true 0.1 true abc false 1 a false 2e10 true 90e3 true 1e false e3 false 6e 1 true 99e2.5 false 53.5e93 true 6 ...