LeetCode-187-重復(fù)的DNA序列

題目描述:所有 DNA 都由一系列縮寫為 'A','C','G' 和 'T' 的核苷酸組成,例如:"ACGAATTCCG"。在研究 DNA 時,識別 DNA 中的重復(fù)序列有時會對研究非常有幫助。
編寫一個函數(shù)來找出所有目標子串,目標子串的長度為 10,且在 DNA 字符串 s 中出現(xiàn)次數(shù)超過一次。
來源:力扣(LeetCode) ??
鏈接:https://leetcode-cn.com/problems/repeated-dna-sequences/ ??
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
解法一:哈希
首先,判斷特殊情況,如果字符串的長度小于11,說明不夠組成一個目標子串,不可能有重復(fù)的序列,直接返回空。
否則,初始化一個map,用來記錄每一個不重復(fù)的長度為10的子串,key為子串,value表示相應(yīng)的key是否是重復(fù)序列。然后遍歷字符串,每10位作為一個子串,判斷當前子串如果不存在,則添加到key中;如果存在且已標為重復(fù),則跳過,如果沒有標為重復(fù),則標為重復(fù)子串。
最后,返回標為重復(fù)的子串即為重復(fù)的序列。
【每日寄語】 星星之火,可以燎原。
標簽: