日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

重复的DNA序列

發布時間:2024/5/8 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 重复的DNA序列 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

DNA序列 由一系列核苷酸組成,縮寫為 'A', 'C', 'G' 和 'T'.。

例如,"ACGAATTCCG"?是一個 DNA序列 。
在研究 DNA 時,識別 DNA 中的重復序列非常有用。

給定一個表示 DNA序列 的字符串 s ,返回所有在 DNA 分子中出現不止一次的 長度為 10 的序列(子字符串)。你可以按 任意順序 返回答案。

示例 1:

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

示例 2:

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

示例代碼1: 【哈希表】

from collections import defaultdictclass Solution(object):def findRepeatedDnaSequences(self, s):l = 10dic = defaultdict(int)ans = []for i in range(len(s) - l + 1):res = s[i:i + l]dic[res] += 1if dic[res] == 2:ans.append(res)return anss = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT" obj = Solution() ret = obj.findRepeatedDnaSequences(s) print(ret)

思路分析:

  • 使用哈希表統計 s?所有長度為 10的子串的出現次數,返回所有出現次數超過 10的子串。
  • 代碼實現時,一邊遍歷子串一邊記錄答案,為了不重復記錄答案,只統計當前出現次數為 2?的子串。

復雜度分析:

  • 時間復雜度:O(NL),其中 N?是字符串s 的長度,L=10即目標子串的長度。
  • 空間復雜度:O(NL)。

示例代碼2:? 【滑動窗口】

class Solution(object):def findRepeatedDnaSequences(self, s):l = 10if len(s) < l:return []ans, window = set(), set()for i in range(len(s) - l + 1):tmp = s[i:i + l]if tmp not in window:window.add(tmp)else:ans.add(tmp)return list(ans)s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT" s = "AAAAAAAAAAA" obj = Solution() ret = obj.findRepeatedDnaSequences(s) print(ret)

總結

以上是生活随笔為你收集整理的重复的DNA序列的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。