看到兩個字串就想到用動態規劃來做這道題了。設dp[i][j]為text1[:i]和text2[:j]的最長公共子串行的長度。
如果計算dp[i][j]分為兩種情況:
class
solution
(object):
deflongestcommonsubsequence
(self, text1, text2)
:"""
:type text1: str
:type text2: str
:rtype: int
"""m,n =
len(text1)
,len
(text2)
dp =[[
0]*(n+1)
for i in
range
(m+1)]
for i in
range(1
,m+1):
for j in
range(1
,n+1):
if text1[i-1]
==text2[j-1]
: dp[i]
[j]= dp[i-1]
[j-1]+
1else
: dp[i]
[j]=
max(dp[i-1]
[j],dp[i]
[j-1])
return dp[-1
][-1
]
LeetCode1143 最長公共子串行
題目描述 給定兩個字串 text1 和 text2,返回這兩個字串的最長公共子串行。乙個字串的 子串行 是指這樣乙個新的字串 它是由原字串在不改變字元的相對順序的情況下刪除某些字元 也可以不刪除任何字元 後組成的新字串。例如,ace 是 abcde 的子串行,但 aec 不是 abcde 的子串行。...
LeetCode 1143 最長公共子串行
給定兩個字串 text1 和 text2,返回這兩個字串的最長公共子串行。乙個字串的 子串行 是指這樣乙個新的字串 它是由原字串在不改變字元的相對順序的情況下刪除某些字元 也可以不刪除任何字元 後組成的新字串。例如,ace 是 abcde 的子串行,但 aec 不是 abcde 的子串行。兩個字串的...
最長公共子串行 LeetCode 1143
給定兩個字串 text1 和 text2,返回這兩個字串的最長公共子串行。若這兩個字串沒有公共子串行,則返回 0。乙個字串的子串行是指這樣乙個新的字串 它是由原字串在不改變字元的相對順序的情況下刪除某些字元 也可以不刪除任何字元 後組成的新字串。例如,ace 是 abcde 的子串行,但 aec 不...