Leetcode刷題每日總結 5 7 1312

2021-10-08 10:17:16 字數 2747 閱讀 8815

5. 最長回文子串

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

示例 1:

輸入:"babad"輸出:"bab"注意:"aba" 也是乙個有效答案。
示例 2:

輸入:"cbbd"輸出:"bb"
想法:dp動態規劃模板題。首先,考慮到單個字元是回文子串,將區間狀態值設定為真,所以dp[i][i] 為 true,在遍歷字串中,我一頭一尾遍歷,在頭尾字元相等的情況下,裡面子串的回文性質據定了整個子串的回文性質,也就是說dp[i][j] 的狀態取決於 dp[i+1][j-1]的狀態 這就是狀態轉移。因此可以把「狀態」定義為原字串的乙個子串是否為回文子串。

如示例一:dp狀態陣列如下:s行代表原字串,dp代表狀態陣列縱座標代表子串初始字元,橫座標代表子串結束字元,值代表狀態,0代表區間非回文,1代表區間為回文。sb

abad

dp[0]

[1][2]

[3][4]

[0]101

01[1]101

0[2]10

1[3]10

[4]1

class solution 

int i,j;

int start = 0;

int len = s.size();

int ans = 1; //串非空,最小回文子串長度為1;

int dp[1000][1000]; //

for(i=0;ians) //找到回文子串最長長度

}

}return s.substr(start,ans); //返回子串位置

}};

7. 整數反轉

給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。

示例 1:

輸入: 123

輸出: 321

示例 2:

輸入: -123

輸出: -321

示例 3:

輸入: 120

輸出: 21

注意:假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 [−231,  231 − 1]。請根據這個假設,如果反轉後整數溢位那麼就返回 0。

想法:一道數字邏輯題,長時間不做可以練練手。如示例一:123%10 = 3;123/10 = 12 ;12%10 = 2;12/10 = 1;1%10 = 1;1/10 =0;3*10*10+2*10+1 = 321;符號別忘加,以及注意數字。

class solution 

if(ans > int_max || ans < int_min) return 0;

return ans;

}};

1312. 讓字串成為回文串的最少插入次數

給你乙個字串s,每一次操作你都可以在字串的任意位置插入任意字元。

請你返回讓s成為回文串的最少操作次數

「回文串」是正讀和反讀都相同的字串。

示例 1:

輸入:s = "zzazz"輸出:0解釋:字串 "zzazz" 已經是回文串了,所以不需要做任何插入操作。
示例 2:

輸入:s = "mbadm"輸出:2解釋:字串可變為 "mbdadbm" 或者 "mdbabdm" 。
示例 3:

輸入:s = "leetcode"輸出:5解釋:插入 5 個字元後字串變為 "leetcodocteel" 。
示例 4:

輸入:s = "g"輸出:0
示例 5:

輸入:s = "no"輸出:1

想法:考慮用動態規劃。求的就是不為最長回文子串行的字元個數,所以我們只需要用字串長度減去最長回文子串行的長度就是最少插入次數了。如示例3,「leetcode」在有兩個字元『e』相同的情況下(該字串的最長回文子串行),我們在補上「leetcodoct

eel」即可變為回文串(octel五個字元)。

注意:我們需要從後往前遍歷,因為每乙個dp[i][j]取決於它前面的最大回文子串行長度!之前寫過從前向後遍歷的方式,但是經過仔細思考後(錯誤後)應該從後向前遍歷。

class solution 

else}}

return len-dp[0][len-1]; //將原字串長度減去最長回文子串行長度。

}};

leetcode每日刷題

題目描述 有效括號字串為空 a 或 a b,其中 a 和 b 都是有效的括號字串,代表字串的連線。例如,和 都是有效的括號字串。如果有效字串 s 非空,且不存在將其拆分為 s a b 的方法,我們稱其為原語 primitive 其中 a 和 b 都是非空有效括號字串。給出乙個非空有效字串 s,考慮將...

每日刷題總結

public class parent voidm2 protected voidm3 public static voidm4 a.子類中一定能夠繼承和覆蓋parent類的m1方法 b.子類中一定能夠繼承和覆蓋parent類的m2方法 c.子類中一定能夠繼承和覆蓋parent類的m3方法 d.子類...

LeetCode刷題總結

123 4567 891011 12 元素交換 swap a 1 a 3 sort排序 sort a.begin a.end 陣列顛倒 reverse a.begin a.end 陣列元素置為0 memset a,0,a.size 陣列取值 a.push back 定義二維陣列 vector vec...