溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

java中如何查看重復(fù)的DNA序列

發(fā)布時間:2022-01-17 14:16:55 來源:億速云 閱讀:143 作者:清風(fēng) 欄目:大數(shù)據(jù)

本文將為大家詳細(xì)介紹“java中如何查看重復(fù)的DNA序列”,內(nèi)容步驟清晰詳細(xì),細(xì)節(jié)處理妥當(dāng),而小編每天都會更新不同的知識點(diǎn),希望這篇“java中如何查看重復(fù)的DNA序列”能夠給你意想不到的收獲,請大家跟著小編的思路慢慢深入,具體內(nèi)容如下,一起去收獲新知識吧。

所有 DNA 由一系列縮寫為 A,C,G 和 T 的核苷酸組成,例如:“ACGAATTCCG”。在研究 DNA 時,識別 DNA 中的重復(fù)序列有時會對研究非常有幫助。

編寫一個函數(shù)來查找 DNA 分子中所有出現(xiàn)超過一次的10個字母長的序列(子串)。

示例:

輸入: s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT"

輸出: ["AAAAACCCCC", "CCCCCAAAAA"]

答案:

 1public List<String> findRepeatedDnaSequences(String s) {
2    Set seen = new HashSet();
3    Set repeated = new HashSet();
4    for (int i = 0; i + 9 < s.length(); i++) {
5        String ten = s.substring(i, i + 10);
6        if (!seen.add(ten))
7            repeated.add(ten);
8    }
9    return new ArrayList(repeated);
10}

解析:

意思是每次截取10個字符的子串,并且這種字串出現(xiàn)的次數(shù)超過一次,代碼很簡單,每次截取的時候都會存放到seen集合中,如果存放失敗,表示出現(xiàn)了重復(fù),再來看一種寫法

 1public List<String> findRepeatedDnaSequences(String s) {
2    Set<Integer> words = new HashSet<>();
3    Set<String> repeated = new HashSet<>();
4    char[] map = new char[26];
5    //map['A' - 'A'] = 0;
6    map['C' - 'A'] = 1;
7    map['G' - 'A'] = 2;
8    map['T' - 'A'] = 3;
9    for (int i = 0; i < s.length() - 9; i++) {
10        int v = 0;
11        for (int j = i; j < i + 10; j++) {
12            v <<= 2;
13            v |= map[s.charAt(j) - 'A'];
14        }
15        if (!words.add(v)) {
16            repeated.add(s.substring(i, i + 10));
17        }
18    }
19    return new ArrayList(repeated);
20}

這種解法和第一種其實(shí)原理都是一樣的,只不過這里存儲的是一個int類型,因?yàn)?,1,2,3分別表示的是ACGT,int類型的每兩位用來存儲ACGT中一個,我們還可以每3位存儲,最多也就是30位,小于int類型的32位,就是把下面第12行的v<<=2改為v<<=3。但不能每4位存儲,因?yàn)檫@樣超過了int的范圍。

java基本數(shù)據(jù)類型有哪些

Java的基本數(shù)據(jù)類型分為:1、整數(shù)類型,用來表示整數(shù)的數(shù)據(jù)類型。2、浮點(diǎn)類型,用來表示小數(shù)的數(shù)據(jù)類型。3、字符類型,字符類型的關(guān)鍵字是“char”。4、布爾類型,是表示邏輯值的基本數(shù)據(jù)類型。

如果你能讀到這里,小編希望你對“java中如何查看重復(fù)的DNA序列”這一關(guān)鍵問題有了從實(shí)踐層面最深刻的體會,具體使用情況還需要大家自己動手實(shí)踐使用過才能領(lǐng)會,如果想閱讀更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI