DNA序列 由一系列核苷酸组成,缩写为 'A'
, 'C'
, 'G'
和 'T'
.。
- 例如,
"ACGAATTCCG"
是一个 DNA序列 。
在研究 DNA 时,识别 DNA 中的重复序列非常有用。
给定一个表示 DNA序列 的字符串 s
,返回所有在 DNA 分子中出现不止一次的 长度为 10
的序列(子字符串)。你可以按 任意顺序 返回答案。
示例 1:
输入:s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT" 输出:["AAAAACCCCC","CCCCCAAAAA"]
思路:直接暴力遍历
第一遍
class Solution(object): def findRepeatedDnaSequences(self, s): """ :type s: str :rtype: List[str] """ zixulies = list() length = len(s) for i in range(length-10): zixulies.append(s[i:i+10]) ans = list(set(zixulies)) re = list() for zixulie in ans: if zixulies.count(zixulie)>1: re.append(zixulie) return re
对字符串切片的长度、循环的起止 把握有误 WA
第二遍
class Solution(object): def findRepeatedDnaSequences(self, s): """ :type s: str :rtype: List[str] """ zixulies = list() length = len(s) for i in range(length-9): zixulies.append(s[i:i+10]) ans = list(set(zixulies)) re = list() for zixulie in ans: if zixulies.count(zixulie)>1: re.append(zixulie) return re
31个测试用例过了30个 超时了
第三遍 把第二次的代码给WXYY让他优化时间复杂度
class Solution(object): def findRepeatedDnaSequences(self, s): """ :type s: str :rtype: List[str] """ dna_sequences = set() seen = set() for i in range(len(s) - 9): sequence = s[i:i+10] if sequence in seen: dna_sequences.add(sequence) seen.add(sequence) return list(dna_sequences)
标签:DNA,zixulies,list,re,187,str,zixulie From: https://www.cnblogs.com/LYoungH/p/17810570.html