• [leetcode]187. Repeated DNA Sequences重复DNA序列


    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.

    Example:

    Input: s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT"
    
    Output: ["AAAAACCCCC", "CCCCCAAAAA"]

    题意:

    DNA序列里有ATCG四种,求所有长度为10,出现次数超过一次的序列。

    Solution1: HashMap

    1.  scan the given string,  put each 10-letter-long substring and its corresponding frequency into a map

    2. looping each entrySet in the map, find if entry.getValue() > 1 

    code

     1 /*
     2 Time Complexity: O(n)
     3 Space Complexity: O(n)
     4 */
     5 class Solution {
     6     public List<String> findRepeatedDnaSequences(String s) {
     7         List<String> result = new ArrayList<>();
     8         // corner case
     9         if (s.length() < 10) return result;
    10         
    11         Map<String, Integer> map = new HashMap<>();
    12         for (int i = 0; i < s.length() - 9; ++i) {
    13             String key = s.substring(i, i + 10);
    14             if(map.containsKey(key)){
    15                 map.put(key, map.get(key) + 1);
    16             }else{
    17                 map.put(key, 1);
    18             } 
    19         }
    20 
    21         for (Map.Entry<String, Integer> entry : map.entrySet()) {
    22             if (entry.getValue() > 1) {
    23                 result.add(entry.getKey());
    24             }
    25         }
    26         return result;
    27     }
    28 }
  • 相关阅读:
    【纪中集训2019.3.19】原样输出
    【纪中集训2019.3.11】树上四次求和
    【纪中集训2019.3.11】Cubelia
    【纪中集训2019.3.14】小凯的疑惑
    leetcode 18 4Sum
    leetcode 17 Letter Combinations of a Phone Number
    leetcode 11 Container With Most Water
    leetcode 16 3Sum Closest
    leetcode 15 3Sum
    leetcode 14 Longest Common Prefix
  • 原文地址:https://www.cnblogs.com/liuliu5151/p/10807445.html
Copyright © 2020-2023  润新知