All DNA is composed of a series of nucleotides abbreviated as A, C, G, and T, for example: “ACGAATTCCG”. When studying DNA, it is sometimes useful to identify repeated sequences within the DNA.
Write a function to find all the 10-letter-long sequences (substrings) that occur more than once in a DNA molecule.
第一种方法,像切猪肉那样,将s分成两段,然后比较,可惜TLE了
class Solution(object):
def findRepeatedDnaSequences(self,s):
list_=list(s)
ans=[]
while len(list_)>10:
sub_string="".join([list_[i] for i in range(10)])
sub_string2=s[s.find(sub_string)+len(sub_string):]
if sub_string in sub_string2 and sub_string not in ans:
ans.append(sub_string)
list_.remove(list_[0])
return ans
第二种方法,存在字典中,如果在字典中出现且在ans中未曾录入的,则ans.append(),注意细节,range(len(s)-9)而不是-10
class Solution(object):
def findRepeatedDnaSequences(self,s):
doc={}
ans=[]
if len(s)<=10:
return ans
for i in range(len(s)-9):
temp=s[i:i+10]
if temp not in doc:
doc.setdefault(temp,None)
else:
if temp not in ans:
ans.append(temp)
return ans