最长公共子序列程序抛出字符串索引超出范围错误
Longest Common Subsequence program throws a string index out of range error
我有两个字符串
str1 = "bqdrcvefgh"
str2 = "abcvdefgh"
我想找到两者之间的 LCS strings.But 我遇到字符串索引超出范围 exception.This 是我的代码
str1 = "bqdrcvefgh"
str2 = "abcvdefgh"
#taking str1 as column and str2 as row
lis = [[0]*(len(str1)+1) for i in range(len(str2)+1)]
#The first row and first column has default value of 0
for i in range(1,len(str2)+1):
for j in range(1,len(str1)+1):
if str2[i]==str1[j]:
lis[i][j] = lis[i-1][j-1]+1
else:
lis[i][j] = max(lis[i][j-1],lis[i-1][j])
#length of the longest LCS
print(lis[len(str2)][len(str1)])
我做错了什么?
PS-正确答案是7
索引从零到 len-1 是 运行(从 1 到 len 是 运行)。
固定代码如下:
def lcs(str1, str2):
#taking str1 as column and str2 as row
lis = [[0]*(len(str1)) for i in range(len(str2))]
for i in range(len(str2)):
for j in range(len(str1)):
if str2[i]==str1[j]:
lis[i][j] = lis[i-1][j-1]+1
else:
lis[i][j] = max(lis[i][j-1],lis[i-1][j])
#length of the longest LCS
print(lis[len(str2)-1][len(str1)-1])
str1 = "bqdrcvefgh"
str2 = "abcvdefgh"
lcs(str1, str2) # prints 7
我有两个字符串
str1 = "bqdrcvefgh"
str2 = "abcvdefgh"
我想找到两者之间的 LCS strings.But 我遇到字符串索引超出范围 exception.This 是我的代码
str1 = "bqdrcvefgh"
str2 = "abcvdefgh"
#taking str1 as column and str2 as row
lis = [[0]*(len(str1)+1) for i in range(len(str2)+1)]
#The first row and first column has default value of 0
for i in range(1,len(str2)+1):
for j in range(1,len(str1)+1):
if str2[i]==str1[j]:
lis[i][j] = lis[i-1][j-1]+1
else:
lis[i][j] = max(lis[i][j-1],lis[i-1][j])
#length of the longest LCS
print(lis[len(str2)][len(str1)])
我做错了什么?
PS-正确答案是7
索引从零到 len-1 是 运行(从 1 到 len 是 运行)。
固定代码如下:
def lcs(str1, str2):
#taking str1 as column and str2 as row
lis = [[0]*(len(str1)) for i in range(len(str2))]
for i in range(len(str2)):
for j in range(len(str1)):
if str2[i]==str1[j]:
lis[i][j] = lis[i-1][j-1]+1
else:
lis[i][j] = max(lis[i][j-1],lis[i-1][j])
#length of the longest LCS
print(lis[len(str2)-1][len(str1)-1])
str1 = "bqdrcvefgh"
str2 = "abcvdefgh"
lcs(str1, str2) # prints 7