def longest_match(top : str, bottom : str) -> (int,int):
def max_same(top_start : int) -> int:
count = 1
i = 1
for x in top[top_start+1:]:
if i == len(bottom)-1:
break
else:
if x == bottom[i]:
count += 1
i += 1
else:
return count
return count
if bottom[0] not in top:
return (0,0)
for i in top:
if i == bottom[0]:
h = top.index(i)
break
return (h, max_same(h))
longest_match函数,它有两个参数:一个代表DNA链的顶部和底部字符串;它返回顶部链中起始索引的2元组,它匹配从底部链的开头开始的最长字符序列,以及匹配字符的数量。例如,longest_match('accgt,'ccg')返回(1,3); longest_match('accgt,'ca')返回(1,1)
max_same函数是longest_match的本地函数,它接受一个起始索引(对于顶部链)并计算并返回从底部链的开头开始的连续字符数匹配它。
我的功能适用于以下三种情况:
longest_match('accgt','at')-->(0, 1)
longest_match('accgt','ccgt')-->(1, 4)
longest_match('accgt','x')-->(0, 0)
但是对于以下两种情况:
longest_match('accgt','a')-->(0, 1)
longest_match('accgt','ccg')-->(1, 3)
它引发了以下错误:
*Error: longest_match('accgt','a') raised exception IndexError: string index out of range
*Error: longest_match('accgt','ccg') raised exception IndexError: string index out of range
有人可以帮助我修复我的功能吗?