【算法练习】82.重复的DNA序列——哈希表
生活随笔
收集整理的這篇文章主要介紹了
【算法练习】82.重复的DNA序列——哈希表
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?加入組隊刷題,每日一題,每天進步?
題目的意思是編寫一個函數來查找子串,這個子串長度為10,在原字符串中出現超過一次。
——leetcode此題熱評
前言
哈嘍,大家好,我是一條。
糊涂算法,難得糊涂
點擊跳轉到《糊涂算法》專欄學習java大廠面試必備數據結構和算法知識!
Question
187. 重復的DNA序列
難度:中等
所有 DNA 都由一系列縮寫為 ‘A’,‘C’,‘G’ 和 ‘T’ 的核苷酸組成,例如:“ACGAATTCCG”。在研究 DNA 時,識別 DNA 中的重復序列有時會對研究非常有幫助。
編寫一個函數來找出所有目標子串,目標子串的長度為 10,且在 DNA 字符串 s 中出現次數超過一次。
示例 1:
輸入:s = “AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT”
輸出:[“AAAAACCCCC”,“CCCCCAAAAA”]
示例 2:
輸入:s = “AAAAAAAAAAAAA”
輸出:[“AAAAAAAAAA”]
Solution
利用哈希表去重,sub截取字符串。
Code
所有leetcode代碼已同步至github
歡迎star
/*** @author 一條coding*/ class Solution {public List<String> findRepeatedDnaSequences(String s) {List<String> list = new ArrayList<String>();HashMap<String, Integer> map = new HashMap<>();HashSet<String> set = new HashSet<>();if(s.length()<10){return list;}for (int i = 0; i <= s.length()-10; i++) {String substring = s.substring(i, i + 10);if (map.containsKey(substring)){set.add(substring);}else {map.put(substring,1);}}return new ArrayList<>(set);} }Result
復雜度分析
- 時間復雜度:O(NL)
粉絲福利
?今天是堅持刷題更文的第82/100天
?各位的點贊、關注、收藏、評論、訂閱就是一條創作的最大動力
?更多數據結構和算法講解歡迎關注專欄《糊涂算法》
為了回饋各位粉絲,禮尚往來,給大家準備了一些學習資料
👇 點擊下方卡片關注后回復算法 領取👇總結
以上是生活随笔為你收集整理的【算法练习】82.重复的DNA序列——哈希表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: “互联网+”创新创业计划书(二)
- 下一篇: 软件设计师教程(第5版)- 前言和目录