字串篇(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"))
相關文章
- 兩個字串的最長公共子串字串
- 最長公共子序列&迴文字串 nyoj動態規劃字串動態規劃
- 最長公共子序列
- 最長公共子序列(JAVA)Java
- poj 2774 求兩字串的最長公共子串 字尾陣列字串陣列
- “最長公共字串子序列”問題的動態規劃法演算法字串動態規劃演算法
- java 實現 最長公共子序列Java
- 最長公共子序列求方案數
- 線性dp:最長公共子序列
- 最長公共子序列的程式碼實現
- 動態規劃-最長公共子序列動態規劃
- 動態規劃——最長公共子序列動態規劃
- 演算法題:最長公共子序列演算法
- 力扣1143. 最長公共子序列 動態規劃之最長公共子序列力扣動態規劃
- 演算法之字串——最長公共字首演算法字串
- 動態規劃(最長公共子序列LCS)動態規劃
- LCS 演算法:Javascript 最長公共子序列演算法JavaScript
- 【LeetCode動態規劃#14】子序列系列題(最長遞增子序列、最長連續遞增序列、最長重複子陣列、最長公共子序列)LeetCode動態規劃陣列
- 最長不含重複字元的子字串字元字串
- 最長公共子序列,遞迴簡單程式碼遞迴
- Longest Common Prefix字串最長公共字首問題字串
- [演算法筆記]動態規劃之最長公共子串和最長公共子序列演算法筆記動態規劃
- 最長公共子序列問題—動態規劃sdut動態規劃
- LeetCode 1143.最長公共子序列LeetCode
- [題解]P1439 【模板】最長公共子序列
- 動態規劃經典問題----最長公共子序列動態規劃
- 51nod-基因匹配+luogu-【模板】最長公共子序列
- lCS(最長公共子串)
- 【谷歌面試題】找出字串中只包含兩種字元的最長子串谷歌面試題字串字元
- (字串雜湊表)找到字串中不重複出現字元的最長子串長度字串字元
- 最長上升子序列(LIS)的兩種演算法演算法
- 最長上升子序列
- 取字串左邊指定長度的子字串字串
- 取字串右邊指定長度的子字串字串
- Python 兩個字串相減Python字串
- 求字串中不含重複字元的最長子串字串字元
- 經典演算法題每日演練——最長公共子序列演算法
- 詳解動態規劃最長公共子序列--JavaScript實現動態規劃JavaScript