Repeated DNA Sequences

来源:互联网 发布:韶关市政府网络问政 编辑:程序博客网 时间:2024/06/11 16:37


public class Solution {    public List<String> findRepeatedDnaSequences(String s) {        List<String> result = new ArrayList<String>();                if (s == null || s.length() < 10) {            return result;        }                Map<Character, Integer> map = new HashMap<Character, Integer>();        map.put('A', 0);        map.put('C', 1);        map.put('G', 2);        map.put('T', 3);                Set<Integer> cache = new HashSet<Integer>();        Set<Integer> duplicate = new HashSet<Integer>();                int seq = 0;                for (int i = 0; i < s.length(); i++) {            if (i < 9) {                seq = (seq << 2) + map.get(s.charAt(i));            } else {                seq = (seq << 2) + map.get(s.charAt(i));                seq = seq & ((1 << 20) - 1);                                if (cache.contains(seq) && !duplicate.contains(seq)) {                    duplicate.add(seq);                    result.add(s.substring(i - 9, i + 1));                } else if (!cache.contains(seq)) {                    cache.add(seq);                }            }        }        return result;    }}


0 0
原创粉丝点击