一、题目
题目描述
牛牛又从生物科研工作者那里获得一个任务,这次牛牛需要帮助科研工作者从DNA序列s中找出最短没有出现在DNA序列s中的DNA片段的长度。
例如:s = AGGTCTA
序列中包含了所有长度为1的('A','C','G','T')片段,但是长度为2的没有全部包含,例如序列中不包含"AA",所以输出2。输入描述:
输入包括一个字符串s,字符串长度length(1 ≤ length ≤ 2000),其中只包含'A','C','G','T'这四种字符。输出描述:
输出一个正整数,即最短没有出现在DNA序列s中的DNA片段的长度。示例1
输入
复制
AGGTCTA输出
复制
2
二、分析及代码
题意:给一串由ACGT组成的字符串,求由ACGT任意组合出现在给定字符串的最短的字符串的长度 。
分析:先求解长度为i的所有组成的字符串,在检查每个字符串是否出现。python实现很简单,代码如下:
def find_sub_dna(n): t = ['A', 'C', 'G', 'T'] ele = t if n == 1: return t else: new = t for i in range(n-1): t = new for j in range(len(t)): for k in range(4): new.append(str(t[j] + ele[k])) return new s = input() ori = s s = list(s) l = len(s) flag = 1 for i in range(1, l+1): sub_dna = find_sub_dna(i) for x in sub_dna: if x not in ori: print(i) flag = 0 break if flag == 0: break