2017-07-16 13 views
0

外の文字列インデックスをスローしますstrings.But私はレンジexception.This外の文字列インデックスに遭遇しています、私は間違って何をやっている私のコード最長共通部分のプログラムは、私は二つの文字列</p> <p>str1が=「bqdrcvefgh」</p> <p>STR2 =</p> <p>「abcvdefgh」私は2つの間のLCSを見つけたいを持っている範囲エラー

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つの

答えて

0

インデックスは、(それがlen包括まで1から実行されていた)でlen-1までゼロから実行されてあります。

ここでは固定コードです:

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 
+0

は、1行1列目は、ゼロのデフォルト値を持っているので、私は1からループを実行すべきではありませんなぜあなたは説明できますか? –

+0

@SouvikRayあなたは同じインデックスを使用して文字列を繰り返しています – alfasin

+1

ああ!私は気が付かなかった!それを指摘してくれてありがとう! –

関連する問題

 関連する問題