演算法學習 最長公共子串行

2021-08-10 08:13:01 字數 437 閱讀 9832

題目:給定乙個字串s,你可以從中刪除一些字元,使得剩下的串是乙個回文串。如何刪除才能使得回文串最長呢?

輸出需要刪除的字元個數。

利用回文串的特點,正串和反串相同,求兩者的最大公共子串行,原長度減去最大公共子串行長度即為需要刪除的字元個數

最大公共子串行:

abcde 和acfef  為最大公共子串行

利用動態規劃思想:

str1:m   str2:n

maxlen[m,n]=0

i,j從0開始遍歷到m,n

if str1[i]==str2[j],so maxlen[i,j]=maxlen[i-1,j-1]+1

if str1[i]!=str2[j],so max[i,j]=max(maxlen[i-1,j],maxlen[i,j-1])

則maxlen[m,n]一定是最大公共子串行長度

演算法 最長公共子串行

好久沒做演算法題了,現在發現自己的演算法能力非常薄弱,所以特意練練,順便做個筆記方便以後檢視。今天整理一下最長公共子串行,最長公共子串行的問題常用於解決字串的相似度,是乙個非常實用的演算法,作為碼農,此演算法是我們的必備基本功。最長公共子串行,是指兩個字串可具有的長度最大的公共的子串行。聽著好像有點...

演算法 最長公共子串行

題目 給定兩個字串 text1 和 text2,返回這兩個字串的最長公共子串行的長度。乙個字串的 子串行 是指這樣乙個新的字串 它是由原字串在不改變字元的相對順序的情況下刪除某些字元 也可以不刪除任何字元 後組成的新字串。例如,ace 是 abcde 的子串行,但 aec 不是 abcde 的子串行...

經典演算法學習 動態規劃 最長公共子串行

前幾天做筆試題,遇到最長遞增子串行的問題,不知怎麼解,看網上有一種先將該序列排序,以轉化為求新序列與原有序列的最長公共子串。然而,最長公共子串行也!不!會!這兩個演算法在大學時都應該是接觸過的,到此時居然已經忘的一乾二淨,才知道自己究竟差了多少功夫。於是先學一下最長公共子串行的解法,在這裡記下來,待...