網(wǎng)站建設(shè)的淘寶模板南寧seo費用服務(wù)
647. 回文子串
回文的做法注定我們得從里面入手,逐漸擴散到邊界
初始化:準備一個ans,找到一個回文子串加一個
dp = [[0] * n for _ in range(n)]ans = 0
遍歷公式: 當s[i]==s[j]的時候,只要里面還是回文串,就能說明s[i:j + 1]是回文串
if s[i] == s[j]:if j - i > 2:if dp[i + 1][j - 1] == 1:ans += 1dp[i][j] = 1else:ans += 1dp[i][j] = 1
516.最長回文子序列
與上題不同,此題找的是最長回文子序列,回首前面的數(shù)組子序列題,我們要注意好繼承的情況,以及dp數(shù)組的含義應(yīng)該是:當前包含的最長回文子序列的長度。
初始化:每個回文串的最低長度都為1
dp = [[1] * n for _ in range(n)]
遍歷公式: 字符相同,就在原最長長度上加2,不然就繼承最長數(shù)目
if s[i] == s[j]:if j - i > 1:dp[i][j] = dp[i + 1][j - 1] + 2else:dp[i][j] = j - i + 1else:dp[i][j] = max(dp[i + 1][j], dp[i][j - 1])
動態(tài)規(guī)劃總結(jié)
寫法總結(jié):
1.創(chuàng)建dp數(shù)組,做好數(shù)組下標定義是成功的基礎(chǔ)
2.初始化注意題目要求
3.遍歷公式注意數(shù)組下標定義
4.遍歷順序注意題目求解
5.dp舉例驗證結(jié)果正確性
類型區(qū)分:
1.爬樓梯與路徑問題
從過程得到結(jié)果
2.背包問題
組合數(shù)與排列數(shù),01亦或完全,更多時候需要對題目進行解讀,能否轉(zhuǎn)換成背包問題是關(guān)鍵
3.打家劫舍
線性,環(huán)形,樹狀打劫,歸根究底注意偷與不偷的狀態(tài)區(qū)分
4.股票買賣
買與賣的遍歷公式,已經(jīng)更多狀態(tài)就需要改變dp數(shù)組進行狀態(tài)壓縮來達到目的
5.編輯距離
子數(shù)組與子序列的遍歷區(qū)分,以及不同題目要求的遍歷公式的微妙區(qū)別
6.回文字符串
回文特點運用于字符串,從里到外是關(guān)鍵順序
Need?have brave to beat issues with facing endless failures.