187.重复的DNA序列
线性时间窗口切片 + HashSet
思想:
沿着长度为N的字符串移动长度为L的窗口,将每次移动得到的结果记录下来,如果在记录表中出现这样的字符,则记录在输出表中。否则在记录表中登记该结果。
class Solution(object):
def findRepeatedDnaSequences(self, s):
N=len(s);L=10
#这里设置成set(),后面使用的参数设置为add.
#不使用list是因为会返回重复值‘AAAAAAAAA''AAAAAAAAA'
seen=set();output=set()
#在长度为N的字符串中可以找到N-L+1个L长度的字符串
#需要对每个字符串遍历
for i in range(N-L+1):
cur=s[i:i+L]
if cur in seen:
output.add(cur)
seen.add(cur)
#最后要改成list形式,是因为需要List格式的文件。
return list(output)
#而且返回list(set(output))又会超出时间限制。