您的位置:首页 > 编程语言 > Python开发

爱奇艺校招----DNA序列(python)

2019-03-11 15:30 375 查看

一、题目

题目描述

牛牛又从生物科研工作者那里获得一个任务,这次牛牛需要帮助科研工作者从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实现很简单,代码如下:

[code]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
4000
sub_dna:
if x not in ori:
print(i)
flag = 0
break

if flag == 0:
break

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: