亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

leetcode187. Repeated DNA Sequences

Noodles / 2635人閱讀

摘要:題目要求所有的都是有這四個(gè)字母組成的,比如。這個(gè)問(wèn)題要求我們?cè)谝粋€(gè)序列中找到出現(xiàn)超過(guò)兩次的長(zhǎng)度為的子序列。因?yàn)閭€(gè)字母意味著每個(gè)字母至少需要位才能表示出來(lái)。因?yàn)槊總€(gè)字符串對(duì)應(yīng)的二進(jìn)制長(zhǎng)度為,小于整數(shù)的,因此是可行的。

題目要求
All DNA is composed of a series of nucleotides abbreviated as A, C, G, and T, for example: "ACGAATTCCG". 
When studying DNA, it is sometimes useful to identify repeated sequences within the DNA.

Write a function to find all the 10-letter-long sequences (substrings) that occur more than once in a DNA molecule.

For example,
Given s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT",

Return:
["AAAAACCCCC", "CCCCCAAAAA"].

所有的DNA都是有A,C,G,T這四個(gè)字母組成的,比如“ACGAATTCCG”。在研究DNA的時(shí)候,從DNA序列中找到重復(fù)出現(xiàn)的模式是很有用的。這個(gè)問(wèn)題要求我們?cè)谝粋€(gè)DNA序列中找到出現(xiàn)超過(guò)兩次的長(zhǎng)度為10的子序列。

比如,假設(shè)DNA序列為AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT,那么找到的滿足條件的子序列為["AAAAACCCCC", "CCCCCAAAAA"]

思路一:直接比較String

其實(shí),我們只需要找到所有的長(zhǎng)度為10的子序列并且判斷這些子序列是否存在重復(fù)就可以了。如果不考慮生成子字符串的過(guò)程,那么這個(gè)算法只需要遍歷一次字符串就可以完成了。
代碼如下:

    public List findRepeatedDnaSequences(String s) {
        //記錄不是第一次遍歷到的結(jié)果
        Set result = new HashSet();
        //記錄第一次遍歷到的結(jié)果
        Set visited = new HashSet();
        for(int i = 0 ; i(result);
    }
思路二:將String轉(zhuǎn)化為Integer

上一題的思路其實(shí)基本沒(méi)有問(wèn)題,唯一的缺點(diǎn)是,一個(gè)長(zhǎng)度為n的字符串能夠產(chǎn)生n-9個(gè)長(zhǎng)度為10的子字符串。這n-9個(gè)子字符串所占用的空間將會(huì)遠(yuǎn)遠(yuǎn)超過(guò)n-9個(gè)整數(shù)所占用的空間。如果之間存儲(chǔ)字符串,那么很可能會(huì)造成內(nèi)存溢出。因此我們需要考慮將字符串轉(zhuǎn)化為整數(shù)并存儲(chǔ)。

其實(shí)如果是將26個(gè)字母全部轉(zhuǎn)化為整數(shù),并用整數(shù)表示任意10個(gè)字母所組成的字符串是不可能的。因?yàn)?6個(gè)字母意味著每個(gè)字母至少需要5位才能表示出來(lái)。比如00000代表A, 00001代表B。而10個(gè)字母意味著需要5*10=50位,而一個(gè)整形是32位。

而本題中,只有四個(gè)字母A,C,G和T,只需要兩位就可以表示這四個(gè)字母,分別是:
A----00----0
C----01----1
G----10----2
T----11----3

那么ACGAATTCCG對(duì)應(yīng)的二進(jìn)制碼就是00 01 10 00 00 11 11 01 01 10, 再將這個(gè)二進(jìn)制數(shù)轉(zhuǎn)換成對(duì)應(yīng)的十進(jìn)制數(shù)。因?yàn)槊總€(gè)字符串對(duì)應(yīng)的二進(jìn)制長(zhǎng)度為20,小于整數(shù)的32,因此是可行的。

代碼如下:

    public List findRepeatedDnaSequences2(String s){
        
        List result = new ArrayList();
        Set firstTime = new HashSet();
        Set secondTime = new HashSet();

        //也可以使用hashmap,但是用數(shù)組的話可以很好的提升性能
        char[] map = new char[26];
        map["A"-"A"] = 0;//00
        map["C"-"A"] = 1;//01
        map["G"-"A"] = 2;//10
        map["T"-"A"] = 3;//11

        char[] sArray = s.toCharArray();
        for(int i = 0 ; i


想要了解更多開(kāi)發(fā)技術(shù),面試教程以及互聯(lián)網(wǎng)公司內(nèi)推,歡迎關(guān)注我的微信公眾號(hào)!將會(huì)不定期的發(fā)放福利哦~

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/70814.html

相關(guān)文章

  • 187. Repeated DNA Sequences

    摘要:題目鏈接這道題要求所有重復(fù)出現(xiàn)的序列,那么可以想到得用,因?yàn)檫@里限制了是個(gè)字符長(zhǎng)的序列,所以每次其實(shí)是去掉第一個(gè),再加一個(gè),這個(gè)思想和挺像的,需要用或者來(lái)表示。 187. Repeated DNA Sequences 題目鏈接:https://leetcode.com/problems... 這道題要求所有重復(fù)出現(xiàn)的序列,那么可以想到得用hash table,因?yàn)檫@里限制了是10個(gè)字符...

    kviccn 評(píng)論0 收藏0
  • [Leetcode] Repeated DNA Sequences 重復(fù)DNA序列

    摘要:哈希表法復(fù)雜度時(shí)間空間思路最簡(jiǎn)單的做法,我們可以把位移一位后每個(gè)子串都存入哈希表中,如果哈希表中已經(jīng)有這個(gè)子串,而且是第一次重復(fù),則加入結(jié)果中。如果哈希表沒(méi)有這個(gè)子串,則把這個(gè)子串加入哈希表中。 Repeated DNA Sequences All DNA is composed of a series of nucleotides abbreviated as A, C, G, a...

    wing324 評(píng)論0 收藏0
  • Leetcode PHP題解--D4 961. N-Repeated Element in Size

    摘要:一般算法題用數(shù)學(xué)上的定義方法去描述問(wèn)題,所以理解起來(lái)可能費(fèi)勁一些。其中,數(shù)字為數(shù)組的長(zhǎng)度的一半。求元素出現(xiàn)次數(shù)函數(shù)。輸出用函數(shù),從函數(shù)的返回中,查找數(shù)字。 961. N-Repeated Element in Size 2N Array 題目鏈接 961. N-Repeated Element in Size 2N Array 題目分析 在長(zhǎng)度為2N的數(shù)組A中,有N+1個(gè)元素。其中恰好...

    opengps 評(píng)論0 收藏0
  • [LeetCode] 686. Repeated String Match

    Problem Given two strings A and B, find the minimum number of times A has to be repeated such that B is a substring of it. If no such solution, return -1. For example, with A = abcd and B = cdabcdab. ...

    ashe 評(píng)論0 收藏0
  • 3。leetcode在2N的數(shù)組中找出N的沖服元素

    摘要:題目例一例二注意我的解法優(yōu)秀解法有重復(fù)的和減去沒(méi)有重復(fù)的和再除以長(zhǎng)度除以再減就是重復(fù)的項(xiàng)。 1.題目:In a array A of size 2N, there are N+1 unique elements, and exactly one of these elements is repeated N times. Return the element repeated N ti...

    worldligang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<