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

所有 DNA 都由一系列縮寫為 'A','C','G' 和 'T' 的核苷酸組成,例如:"ACGAATTCCG"。在研究 DNA 時(shí),識(shí)別 DNA 中的重復(fù)序列有時(shí)會(huì)對(duì)研究非常有幫助。

編寫一個(gè)函數(shù)來找出所有目標(biāo)子串,目標(biāo)子串的長度為 10,且在 DNA 字符串 s 中出現(xiàn)次數(shù)超過一次。

示例 1:

輸入:s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT"
輸出:["AAAAACCCCC","CCCCCAAAAA"]
示例 2:

輸入:s = "AAAAAAAAAAAAA"
輸出:["AAAAAAAAAA"]

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/repeated-dna-sequences

解題思路

用一個(gè)窗口,長度為10,掃描字符串,窗口每次往右挪動(dòng)一個(gè)單位
以及兩個(gè)HashSet,將每個(gè)掃描結(jié)果加入其中一個(gè)HashSet,當(dāng)掃描片段在這個(gè)HashSet中已經(jīng)存在則添加到另一個(gè)HashSet,將后者轉(zhuǎn)為List返回

代碼

class Solution {
    public List<String> findRepeatedDnaSequences(String s) {
        HashSet<String> result = new HashSet<>();
        HashSet<String> set = new HashSet<>();
        for (int i = 0; i + 9 < s.length(); i++) {
            String sequence = s.substring(i, i + 10);
            if (!set.contains(sequence)) {
                set.add(sequence);
            } else {
                result.add(sequence);
            }
        }
        return new ArrayList<>(result);
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容