快乐写代码

T187、重复的DNA序列

2020-10-10  本文已影响0人  上行彩虹人

所有 DNA 都由一系列缩写为 A,C,G 和 T 的核苷酸组成,例如:“ACGAATTCCG”。在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助。
编写一个函数来查找目标子串,目标子串的长度为 10,且在 DNA 字符串 s 中出现次数超过一次。
示例:
输入:s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT"
输出:["AAAAACCCCC", "CCCCCAAAAA"]

题目就是求解有多少长度为10的子串多次出现。使用双set求解,第一个set用于判断子串是否出现,第二个set用于对2次以上子串去重,以保证该类子串只出现一次。

  public List<String> findRepeatedDnaSequences(String s) {
        Set<String> res = new HashSet<>();
        Set<String> set = new HashSet<>();
        int len = s.length();
        for(int i = 10; i <= len; i++){
            String sub = s.substring(i-10,i);
            if(!set.add(sub))
                res.add(sub);
        }
        
        return new ArrayList(res);
    }
上一篇下一篇

猜你喜欢

热点阅读