最長回文序列與最長公共子串行(動態規劃)

2021-07-02 15:29:39 字數 771 閱讀 8498

最長回文序列( longest palindromic subsequence)

回文序列:正向遍歷與反向遍歷都相同的序列(在原字串中的位置不一定連續)

給定乙個字串,求其最長的回文序列的長度。例如,給定字串是「bbabcbcab」,則最長回文序列的長度為7,「bacbcab」為其中乙個最長回文序列。

用lps(i,j)表示s[i, i + 1,···,j - 1, j]序列的最長回文序列的長度,則有

//遞迴呼叫,i, j分別表示序列的起始下標

int lps(string s, int i, int j)

}return

0;}

//迴圈實現

int lps(string s)

; //初始化

for(int i = 0; i < size; ++i)

tab[i][i] = 1;

for(int j = 0; j < size - 1; ++j)}}

return tab[0][size - 1];

}

最長公共子串行(longest common subsequence)

公共子串行:兩個給定字串中,出現順序相同的序列(位置不一定連續)

設有x = , y = 為給定的兩個序列

int lcs(string str1, int end1, string str2, int end2)

}

最長回文子串行 最長公共子串行 最長連續回文子串

public class solution int result new int len 1 len 1 stringbuffer sb new stringbuffer s sb sb.reverse string rev sb.tostring result 0 0 0 下面兩個for迴圈相當於...

最長公共子串行 與 最長公共子串

最長公共子串行 常用於解決字串的相似度,是指在母串中都出現過並且出現順序與母串保持一致的子串,不要求連續性。最長公共子串 是指在母串中連續出現的子串。例如 cnblogs belong 最長公共子串行為blog,最長公共子串為lo假設z z2,zk 是母串 x 與 y的最長公共子串行lcs,那麼 用...

最長公共子串與最長公共子串行

一 最長公共子串 longest common substring 遍歷的時候用乙個二維陣列儲存相應位置的資訊,如果兩個子串1與子串2相應位置相等 則看各自前乙個位置是否相等,相等則該位置值b i j b i 1 j 1 1,不相等則置為1。如果兩個子串1與子串2相應位置不相等,則b i j 0。如...