重复的DNA序列

问题:

DNA序列 由一系列核苷酸组成,缩写为 'A''C''G' 和 'T'.。

  • 例如,"ACGAATTCCG" 是一个 DNA序列 。

在研究 DNA 时,识别 DNA 中的重复序列非常有用。

给定一个表示 DNA序列 的字符串 s ,返回所有在 DNA 分子中出现不止一次的 长度为 10 的序列(子字符串)。你可以按 任意顺序 返回答案。

示例:

示例 1:

输入:s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT"
输出:["AAAAACCCCC","CCCCCAAAAA"]

示例 2:

输入:s = "AAAAAAAAAAAAA"
输出:["AAAAAAAAAA"]

思想:

利用Set存储具有唯一性,判断字符串从当前位置往后10个的子串是否存储在set中,如果存在则返回true。

代码:

class Solution {
    public List findRepeatedDnaSequences(String s) {
        int n=s.length();
        Set set=new HashSet();
        List ans=new ArrayList();
        for (int i = 0; i <= n-10; i++)
        {
            String str=s.substring(i,i+10);
            //set具有唯一性
            if(!set.add(str) && !ans.contains(str)){
                ans.add(str);
            }
        }
        return ans;
    }
}

你可能感兴趣的:(java,javascript,开发语言)