Leetcode 1143 最長公共子串行

2021-10-06 15:31:53 字數 972 閱讀 6215

題目鏈結

dp思路引導

咋說呢,當你列了乙個二維dp時,往往都會考慮左上方的三個框框對這個框的遞推

同型別見【第190場周賽】leetcode-1458 兩個子串行的最大點積

做了幾道之後,你就會覺得它很經典。

本題具體思路

定義

dp[i][j]表示text1[0-i]和text2[0-j]的最長公共子串行長度。

初始化

將陣列開大一圈,因為""和任何字串結果都為0.

遞推

if(text1[i-1]==text2[j-1])

這對字元會被選入公共子串行,dp[i][j]=dp[i-1][j-1]+1;

else

這對字元無法被一起選入,考慮沒有任一字元的情況.

選最優,dp[i][j]=max(dp[i-1][j],dp[i][j-1]);

這個可能有乙個疑問,為什麼不能考慮兩個都沒選中的dp[i-1][j-1]?

畫圖即可知,dp[i-1][j-1]不可能比max(dp[i-1][j],dp[i][j-1])大。

class

solution

}return dp[text1.

length()

][text2.

length()

];}}

;

LeetCode1143 最長公共子串行

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

LeetCode 1143 最長公共子串行

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

最長公共子串行 LeetCode 1143

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