找到一段 DNA 的最长回文子串

数据挖掘 python-3.x
2022-03-12 11:53:06

我必须创建一个函数来打印一段 DNA 的最长回文子串。我已经写了一个函数来检查一段 DNA 本身是否是回文。请参阅下面的功能。

def make_complement_strand(DNA):
    complement=[]
    rules_for_complement={"A":"T","T":"A","C":"G","G":"C"}
    for letter in DNA:
        complement.append(rules_for_complement[letter])
    return(complement)

def is_this_a_palindrome(DNA): 
        if DNA!=(make_complement_strand(DNA)[::-1]):     
            print("false")                  
            return False
        else:                             
            print("true")
            return True

is_this_a_palindrome("GGGCCC") 

但是现在:如何制作一个打印 DNA 字符串最长回文子串的函数?

回文在遗传学背景下的含义与用于单词和句子的定义略有不同。由于双螺旋是由两条成对的核苷酸链形成的,它们在 5' 到 3' 方向上以相反的方向运行,并且核苷酸总是以相同的方式配对(对于 DNA,腺嘌呤 (A) 与胸腺嘧啶 (T),与尿嘧啶 (U) 代表 RNA;胞嘧啶 (C) 与鸟嘌呤 (G)),如果(单链)核苷酸序列与其反向互补序列相等,则称为回文序列。例如,DNA 序列 ACCTAGGT 是回文的,因为它的逐个核苷酸补体是 TGGATCCA,并且颠倒补体中核苷酸的顺序可以得到原始序列。

1个回答

最长回文子串是一个计算机科学问题。

一种常见的解决方案是 Manacher 算法。