题目:
重复的DNA序列:所有 DNA 都由一系列缩写为 A,C,G 和 T 的核苷酸组成,例如:“ACGAATTCCG”。在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助。 编写一个函数来查找 DNA 分子中所有出现超过一次的 10 个字母长的序列(子串)。
思路:
滑动窗口法。
程序:
class Solution:
def findRepeatedDnaSequences(self, s: str) -> List[str]:
length = len(s)
if length <= 10:
return []
findOut = set()
result = set()
windowLength = 10
for index in range(length - windowLength + 1):
if s[index : index + windowLength] in findOut:
result.add(s[index : index + windowLength])
else:
findOut.add(s[index : index + windowLength])
return list(result)