1. 程式人生 > 實用技巧 >leetcode刷題筆記 一百八十七題

leetcode刷題筆記 一百八十七題

leetcode刷題筆記 一百八十七題

源地址:187. 重複的DNA序列

問題描述:

所有 DNA 都由一系列縮寫為 A,C,G 和 T 的核苷酸組成,例如:“ACGAATTCCG”。在研究 DNA 時,識別 DNA 中的重複序列有時會對研究非常有幫助。

編寫一個函式來查詢目標子串,目標子串的長度為 10,且在 DNA 字串 s 中出現次數超過一次。

示例:

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

//本題解法主要基於動態視窗思想,從頭至尾逐次獲取從長度為10的子串判斷是否出現過,若出現過,則加入res中
import scala.collection.mutable
object Solution {
    def findRepeatedDnaSequences(s: String): List[String] = {
        val length = s.length
        val hs = mutable.HashSet[String]()
        //這裡res是為了排除多次重複的串多次放入結果集合
        val res = mutable.HashSet[String]()

        for (i <- 0 to length-10){
            val temp = s.substring(i, i+10)
            if (hs.contains(temp)) res.add(temp)
            hs.add(temp)
        }

        return res.toList
    }
}