前言:现有长度相等,但碱基存在一定差异的两条DNA序列,求它们之间的最长相同子序列,并输出差异碱基的位置。
- 已知两DNA序列长度均为S,构建二维数组,从第0位开始匹配连续相同的字符,代码如下:
def GetSubStr(str1,str2):
lstr1 = len(str1)
lstr2 = len(str2)
record = [[0 for i in range(lstr2+1)] for j in range(lstr1+1)]
maxNum = 0
p = 0
for i in range(lstr1):
for j in range(lstr2):
if str1[i] == str2[j]:
record[i+1][j+1] = record[i][j] + 1
if record[i+1][j+1] > maxNum:
maxNum = record[i+1][j+1]
p = i + 1
return [str1[p-maxNum:p], maxNum]
- 在两条原DNA序列中去除最长的相同子序列
(输出差异碱基的位置,见下篇)。
网友评论