如何修复longest_match函数?

时间:2017-01-16 02:24:48

标签: python

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

有人可以帮助我修复我的功能吗?

0 个答案:

没有答案