无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網 會員登陸 & 注冊

【自留】最長回文子串——動態(tài)規(guī)劃

2023-08-31 20:16 作者:這是貓貓哦  | 我要投稿

先看題:

給你一個字符串?s,找到?s?中最長的回文子串。

如果字符串的反序與原始字符串相同,則該字符串稱為回文字符串。

示例 1:

輸入:s = "babad"輸出:"bab"解釋:"aba" 同樣是符合題意的答案。

示例 2:

輸入:s = "cbbd"輸出:"bb"


思路:如果一個字符串S是回文串,只有在S前后各多一個相同的字符組成的新串S2才會是回文串。因此,采用一個大小為n*n的二維數組來記錄每一個s的子串是否為回文(n為s總字符數),用一個二重循環(huán)來遍歷子串。用數組來記錄子串情況能大幅降低重復判斷子串是否為回文串的開銷,也是動態(tài)規(guī)劃的核心思想。

數組 dp[i][j] 表示下標從?i?到?j?的子串是否為回文串,在最開始需要將所有 i=j 的位置初始化為true,因為單個字符一定是回文串。

循環(huán)采用外循環(huán)為字符長度,范圍[2, n];內循環(huán)為字符串起始位置,范圍[0, n)。(選擇起點和終點來循環(huán)也行)

循環(huán)主體:

對于每一個i開始j結束的子串,判斷s[i] == s[j],如果不成立則一定不是回文,對應的dp[i][j]設為false,如果成立,先根據ij的長度判斷,如果對應的字符串長度為2,則是回文;長度大于2,則根據dp[i+1][j-1]來記錄。

在每一次循環(huán)的最后判斷該子串長度是否大于之前最長子串,并更新相應變量即可。

細節(jié)方面:因為采用了外循環(huán)從2開始,循環(huán)內會出現的長度最小的字符串為2,對其進行特殊判斷即可,如果采用了別的區(qū)間或者用i和j作為兩層循環(huán),則也需要做對應的邊界處理。

【自留】最長回文子串——動態(tài)規(guī)劃的評論 (共 條)

分享到微博請遵守國家法律
蒲城县| 光山县| 鄯善县| 鄂伦春自治旗| 巴彦淖尔市| 闽侯县| 贺州市| 四子王旗| 金溪县| 会理县| 辽宁省| 海兴县| 通化县| 民权县| 廉江市| 湛江市| 郑州市| 蓬莱市| 贞丰县| 上林县| 三原县| 盐亭县| 纳雍县| 开鲁县| 玉树县| 中超| 甘德县| 肇源县| 安国市| 佳木斯市| 武夷山市| 珲春市| 靖西县| 桐梓县| 郧西县| 安国市| 巴彦淖尔市| 邵东县| 韩城市| 崇信县| 托里县|