刷題-力扣-187. 重複的DNA序列
阿新 • • 發佈:2021-10-08
187. 重複的DNA序列
題目連結
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/repeated-dna-sequences
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。
題目描述
所有 DNA 都由一系列縮寫為 'A','C','G' 和 'T' 的核苷酸組成,例如:"ACGAATTCCG"。在研究 DNA 時,識別 DNA 中的重複序列有時會對研究非常有幫助。
編寫一個函式來找出所有目標子串,目標子串的長度為 10,且在 DNA 字串 s 中出現次數超過一次。
示例 1:
輸入:s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT" 輸出:["AAAAACCCCC","CCCCCAAAAA"]
示例 2:
輸入:s = "AAAAAAAAAAAAA"
輸出:["AAAAAAAAAA"]
提示:
- 0 <= s.length <= 105
- s[i] 為 'A'、'C'、'G' 或 'T'
題目分析
- 根據題目描述,計算字串s中重複出現的長度等於10的字串
- 遍歷字串s將長度為10的字串儲存到unordered_map中,判斷字串出現的次數
程式碼
class Solution { public: vector<string> findRepeatedDnaSequences(string s) { int sLen = s.length(); std::unordered_map<string, int> map; std::vector<string> res; if (sLen < 10) { return res; } for (int i = 10; i <= sLen; ++i) { string str = s.substr(i - 10, 10); map[str]++; if (map[str] == 2) { res.emplace_back(str); } } return res; } };