次の I/O を行う LCS のバージョンを実装するとします。
入力: superLCS('猫','車')
出力: ['ca#','ca#']
現在、私のプログラムはそのために機能しますが、文字がずれていると機能しません。
たとえば、入力が superLCS('art','cad') の場合、出力は ['###','###'] になります。['a##','##a#'] が出力されているはずです
コード:
def superLCS(s1,s2):
return helper(s1,s2,'','')
def helper(s1,s2,res1,res2): #s1 is string 1, s2 is string 2, res1 is result1, res2 is result2
if s1 == '' or s2 == '': #if either string is empty return the result
return [res1,res2]
if s1[0] == s2[0]: #if they are equal, put their string in the list
res1 += s1[0]
res2 += s1[0]
return helper(s1[1:],s2[1:],res1,res2)
else: #if they arent, add a # to the list
res2 += '#'
res1 += '#'
return helper(s1[1:],s2[1:],res1,res2)