牛客題霸 研發 NC127 最長公共子串

2021-10-19 07:33:21 字數 829 閱讀 1508

----------------------------------------------本題鏈結----------------------------------------------

給定兩個字串str1和str2,輸出兩個字串的最長公共子串,如果最長公共子串為空,輸出-1。

輸入

"1ab2345cd","12345ef"

返回值"2345"

動態規劃問題

假設兩個字串長度為n、m,具體分析其問題:

最優子結構:如果知道 n-1、m-1 長度字串的最長公共子串s,則 n、m 長度字串最長公共子串為 s+1(當最後字元相同時) 或者 s(當最後字元不同時)

重疊子問題:為確定 n、m 長度字串最長公共子串,需要知道n-1、m-1 長度字串的最長公共子串;為確定 n-1、m-1 長度字串最長公共子串,需要知道n-2、m-2 長度字串的最長公共子串。。。

狀態轉移方程

d p(

n,m)

=& 0 ,& n=0 \quad or \quad m =0\\ & dp(n-1,m-1) + 1 ,& n>0 \quad \& \quad m > 0 \\ \end \right.

dp(n,m

)=}}

}return res ==0?

"-1"

: str1.

substring

(pos - res, pos);}

}

NC127 最長公共子串

給定兩個字串str1和str2,輸出兩個字串的最長公共子串 題目保證str1和str2的最長公共子串存在且唯一。子串意味著是連續的 1ab2345cd 12345ef 2345 先確定狀態,f i,j 表示str1中前i個字元和str2中前j個字元中的最長公共子串行的長度 但這樣寫不出狀態轉移方程,...

牛客題霸 最長公共子串

題目描述 給定兩個字串str1和str2,輸出兩個字串的最長公共子串,如果最長公共子串為空,輸出 1。示例1輸入 1ab2345cd 12345ef 返回值 2345 python longest common substring param str1 string字串 the string par...

牛客題霸 最長公共字首 C 題解 答案

牛客題霸 最長公共字首 c 題解 答案 編寫乙個函式來查詢字串陣列中的最長公共字首。原本想暴力做,直接多層迴圈套,發現並不用 注意本題,給出了多組字串,求它們的最長公共字首,這可怎麼辦?因為是最長公共字首,也就是所有字串都有 我們先將所有字串排序,越近的字串最長公共字首越多,反而越遠就越少 所以我們...