LeetCode 187. 重复的DNA序列(哈希/位运算)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 187. 重复的DNA序列(哈希/位运算)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 題目
所有 DNA 都由一系列縮寫為 A,C,G 和 T 的核苷酸組成,例如:“ACGAATTCCG”。
在研究 DNA 時,識別 DNA 中的重復序列有時會對研究非常有幫助。
編寫一個函數來查找 DNA 分子中所有出現超過一次的 10 個字母長的序列(子串)。
示例: 輸入:s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT" 輸出:["AAAAACCCCC", "CCCCCAAAAA"]來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/repeated-dna-sequences
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. 解題
2.1 哈希
class Solution { public:vector<string> findRepeatedDnaSequences(string s) {if(s.size() <= 10)return {};unordered_map<string,int> m;int i = 0;while(i < s.size()-9)m[s.substr(i++,10)]++;vector<string> ans;for(auto it = m.begin(); it != m.end(); ++it){if(it->second > 1)ans.push_back(it->first);}return ans;} };120 ms 23.1 MB
2.2 位運算
- 用0-3來表示四種字符,二進制只需要2位,總共20位即可表示10個字符
88 ms 14.9 MB
總結
以上是生活随笔為你收集整理的LeetCode 187. 重复的DNA序列(哈希/位运算)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 536. 从字符串生成
- 下一篇: LeetCode 1457. 二叉树中的