題目鏈結
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 不...