187. 重複的DNA序列(中等,字串)(12.24)
阿新 • • 發佈:2019-01-05
所有 DNA 由一系列縮寫為 A,C,G 和 T 的核苷酸組成,例如:“ACGAATTCCG”。在研究 DNA 時,識別 DNA 中的重複序列有時會對研究非常有幫助。
編寫一個函式來查詢 DNA 分子中所有出現超過一次的10個字母長的序列(子串)。
示例:
輸入: s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT" 輸出: ["AAAAACCCCC", "CCCCCAAAAA"]
思路:長度超過10個字母序列,看有沒有重複的,把重複的給輸出來
class Solution(object): def findRepeatedDnaSequences(self, s): """ :type s: str :rtype: List[str] """ n = len(s) st = set() ret = set() for i in range(n-9): cur = s[i:i+10] #每次前進一個位置,檢查10個字元 if cur in st: #st存每次出現的新的10個字元長的串 ret.add(cur) #若重複出現,則輸出 else: st.add(cur) return list(ret)
執行用時: 80 ms, 在Repeated DNA Sequences的Python提交中擊敗了86.09%的使用者