重复的DNA序列
题目描述:
所有 DNA 都由一系列缩写为 ‘A’,‘C’,‘G’ 和 ‘T’ 的核苷酸组成,例如:“ACGAATTCCG”。在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助。
编写一个函数来找出所有目标子串,目标子串的长度为 10,且在 DNA 字符串 s 中出现次数超过一次。
示例 :
输入:s = “AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT”
输出:[“AAAAACCCCC”,“CCCCCAAAAA”]
提示:
- 0 <= s.length <= 105
- s[i] 为 ‘A’、‘C’、‘G’ 或 ‘T’
解法
用字典记录长度为10的子串即可。
代码
class Solution:
def findRepeatedDnaSequences(self, s: str) -> List[str]:
str2num = {}
res = []
for i in range(len(s) - 9):
substr = s[i: i + 10]
if substr in str2num and str2num[substr] == 1:
res.append(substr)
str2num[substr] = 2
elif substr not in str2num:
str2num[substr] = 1
return res
测试结果
执行用时:52 ms, 在所有 Python3 提交中击败了 88.51% 的用户
内存消耗:27.7 MB, 在所有 Python3 提交中击败了 32.58% 的用户
说明
算法题来源:力扣(LeetCode)