LeetCode 187 Repeated DNA Sequences (Map)

来源:互联网 发布:淘宝店铺怎么改地址 编辑:程序博客网 时间:2024/06/11 07:00

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"].


题目链接:https://leetcode.com/problems/repeated-dna-sequences/


题目分析:用map记录长度为10的子串出现的次数,不知道为什么leet上不支持hashtable,只能用hashmap,注意hashmap的<K,V>不能为空,字符串用StringBuffer非常方便

public class Solution {    public List<String> findRepeatedDnaSequences(String s) {        int len = s.length();        List<String> ans = new ArrayList<>();        if(len < 10) {            return ans;        }        Map<String, Integer> mp = new HashMap<>();        StringBuffer cur = new StringBuffer(s.substring(0, 10));        String t = cur.toString();        mp.put(t, 1);        for(int i = 10; i < len; i++) {            cur.append(s.charAt(i));            cur.deleteCharAt(0);            t = cur.toString();            if(mp.containsKey(t)) {                mp.put(t, mp.get(t) + 1);                if((int)mp.get(t) == 2) {                    ans.add(t);                }            }            else {                mp.put(t, 1);            }        }        return ans;    }}


0 0