字串篇(python)—兩個字串的最長公共子序列
字串篇(python)—兩個字串的最長公共子序列
給定兩個字串A,B,長度分別為m,n。要求求出他們的最長公共子序列,返回其長度,例如
A = “hello word”
B = “loop”
最長公共子序列為“loo” 長度為3
思路
動態規劃的子問題res[i][j]為截止到字串A的第i個字元和截止到字串B的第j個字元的最長公共子序列。由此可以得出遞推公式
當i=0 or j=0 res[i][j] = 0
當A[i] == B[j]時 res[i][j] = res[i-1][j-1]+1
當A[i]!=B[j]時 res[i][j] = max(res[i-1][j],res[i][j+1])
def getLongestComSeq(str1,str2):
len1 = len(str1)
len2 = len(str2)
res = [[0 for i in range(len1 + 1)] for j in range(len2 + 1)]
for i in range(1,len2+1):
for j in range(1, len1 + 1):
if str2[i - 1] == str1[j - 1]:
res[i][j] = res[i - 1][j - 1] + 1
else:
res[i][j] = max(res[i - 1][j], res[i][j - 1])
return res[-1][-1]
print(getLongestComSeq("helloworld", "loop"))
相關文章
- 最長公共子序列
- 最長公共子序列(JAVA)Java
- 最長公共子序列求方案數
- java 實現 最長公共子序列Java
- 最長公共子序列 Longest Common Subsequence
- 線性dp:最長公共子序列
- LeetCode 1143.最長公共子序列LeetCode
- 力扣1143. 最長公共子序列 動態規劃之最長公共子序列力扣動態規劃
- 演算法之字串——最長公共字首演算法字串
- 動態規劃-最長公共子序列動態規劃
- 動態規劃——最長公共子序列動態規劃
- 最長不含重複字元的子字串字元字串
- 【LeetCode動態規劃#14】子序列系列題(最長遞增子序列、最長連續遞增序列、最長重複子陣列、最長公共子序列)LeetCode動態規劃陣列
- 最長公共子序列LCS 輸出所有LCS
- 51Nod 1006 最長公共子序列Lcs
- 動態規劃(最長公共子序列LCS)動態規劃
- 最長公共子序列你學會了嗎
- Python 兩個字串相減Python字串
- [題解]P1439 【模板】最長公共子序列
- 最長公共子序列問題—動態規劃sdut動態規劃
- Leetcode[字串] 5. 最長迴文子串LeetCode字串
- Python連線兩個字串並去除首尾重複子串Python字串
- 求字串中不含重複字元的最長子串字串字元
- JZ-073-最長不含重複字元的子字串字元字串
- abc324E 合併兩字串後能得到某個子序列的方案數字串
- 動態規劃經典問題----最長公共子序列動態規劃
- 51nod-基因匹配+luogu-【模板】最長公共子序列
- 字串最後一個單詞的長度字串
- lCS(最長公共子串)
- 演算法之字串——最長迴文子串演算法字串
- 最長上升子序列
- L2-008 最長對稱子串【最長迴文字串】字串
- 詳解動態規劃最長公共子序列--JavaScript實現動態規劃JavaScript
- 經典演算法題每日演練——最長公共子序列演算法
- python如何比較兩個字串是否相等Python字串
- 淺談最長迴文子串求法——字串雜湊字串
- leetcode無重複字元的最長字串 python實現LeetCode字元字串Python
- 求迴文子序列個數(雖然字串,但是DP)字串