求最長公共子串行本身

2021-10-12 04:58:35 字數 1163 閱讀 1910

題目詳情請見:求字串的最長公共子串行

在上題求出子串行長度基礎上,我們要求出子串行本身長什麼樣

思路:在求最大長度的時候,我把當前最大長度的**記下來,用path陣列儲存

1:當前string1[i] == string2[j]

2:當前string[i] != string2[j],並且dp[i - 1] [j] > dp[i] [j – 1]

3:當前string[i] != string2[j],並且dp[i - 1] [j] < dp[i] [j – 1]

再利用遞迴方法求出具體的子字串

/**

* 求出最長公共子串行

* @param text1

* @param text2

* @return 具體的子字串

*/public string longestcommonsubsequence

(string text1, string text2)

else}}

stringbuilder stringbuilder =

newstringbuilder()

;return

getpath

(text1, len1, len2 ,path, stringbuilder);}

/** * 根據path找到字串路徑(遞迴)

* @param len1

* @param len2

* @param path

* @return 目標子字串

*/private string getpath

(string text1,

int len1,

int len2,

int[

] path, stringbuilder stringbuilder)

if(path[len1]

[len2]==1

)else

if(path[len1]

[len2]==2

)else

return stringbuilder.

tostring()

;}

執行結果:

求最長公共子串行

問題 求兩字串行的最長公共字元子串行。這裡注意子串行和子串的區別,子串行可以是從原字串中取出一部分元素重新拼接而成的字串,但取出的元素之間的前後關係要與原字串一致 而子串則必須是連續的。如 adf 是 abcdef 的子串行,而不是子串。分析與解法 設序列x 和y 的最長公共子串行為z 則 若xm ...

求最長公共子串行

字串行的子串行是指從給定字串行中隨意地 不一定連續 去掉若干個字元 可能乙個也不去掉 後所形成的字串行。令給定的字串行 x x0,x1,xm 1 序列 y y0,y1,yk 1 是 x 的子串行,存在 x的乙個嚴格遞增下標序列 i1,ik 1 使得對所有的 j 0,1,k 1 有 xij yj 例如...

求最長公共子串行和最長公共子串

輸入描述 輸入為兩行字串 可能包含空格 長度均小於等於50。輸出描述 輸出為乙個整數,表示最長公共連續子串的長度。輸入例子 abcde abgde 輸出例子 2題解 例如 str1 abcde str2 abgde matrix 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0...