本文共 1197 字,大约阅读时间需要 3 分钟。
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
转载地址:http://lwqmi.baihongyu.com/