leetcode-187-重复的DNA序列

题目描述:

方法一:

class Solution:
    def findRepeatedDnaSequences(self, s: str) -> List[str]:
        n = 10
        d = {}
        for i in range(len(s)-9):
            if s[i:i+10] in d:
                d[s[i:i+10]] = True
            else:
                d[s[i:i+10]] = False
        return [i for i in d if d[i]]

方法二:

class Solution:
    def findRepeatedDnaSequences(self, s: str) -> List[str]:
        n = 10
        d = collections.defaultdict(int)
        for i in range(len(s)-9):
            d[s[i:i+10]] += 1
        return [i for i in d if d[i]>1]

方法三:

class Solution:
    def findRepeatedDnaSequences(self, s: str) -> List[str]:
        n=len(s)-9 
        d=set() 
        ans=set() 
        for i in range(n): 
            if s[i:i+10] not in d: 
                d.add(s[i:i+10]) 
            elif s[i:i+10] not in ans: 
                ans.add(s[i:i+10]) 
        return list(ans)

 

posted @ 2019-07-20 13:51  oldby  阅读(253)  评论(0编辑  收藏  举报