LeetCode刷题之187.重复的DNA序列
程序员文章站
2022-07-12 08:55:56
...
LeetCode刷题之187.重复的DNA序列
我不知道将去向何方,但我已在路上! |
---|
时光匆匆,虽未曾谋面,却相遇于斯,实在是莫大的缘分,感谢您的到访 ! |
-
题目:
所有 DNA 由一系列缩写为 A,C,G 和 T 的核苷酸组成,例如:“ACGAATTCCG”。在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助。
编写一个函数来查找 DNA 分子中所有出现超过一次的10个字母长的序列(子串)。 -
示例:
输入: s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT"
输出: ["AAAAACCCCC", "CCCCCAAAAA"]
- 代码:
class Solution:
def findRepeatedDnaSequences(self, s: str) -> List[str]:
a = set()
b = set()
for i in range(len(s) - 9):
temp = s[i:i+10]
if temp not in a:
a.add(temp)
elif temp not in b:
b.add(temp)
return(list(b))
# 执行用时 :88 ms, 在所有 Python3 提交中击败了88.70%的用户
# 内存消耗 :25.8 MB, 在所有 Python3 提交中击败了62.50%的用户
-
算法说明:
建立两个空的集合,将字符串按照10个字符进行切片成temp,判断temp是否存在于a中,如果不存在,说明temp只出现过一次,则存储在a中;如果存在于a中,说明出现过不止一次,应该是重复的片段,将其存储在b中,但是为了避免重复,在存储的时候判断是否在b中存在,不存在则将其存入b中;将b转换为列表形式输出即可。
上一篇: LeetCode刷题之350.两个数组的交集 II
下一篇: 动态规划——最长公共子序列