lc-187


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

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

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

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

示例 1:

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

示例 2:

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

提示:

  • 0 <= s.length <= 105
  • s[i]``==``'A''C''G' or 'T'

//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public List<String> findRepeatedDnaSequences(String s) {
        Set<String> strSet = new HashSet<>();
        List<String> result = new ArrayList<>();
        StringBuilder sBuilder = new StringBuilder();

        for (char ch : s.toCharArray()) {
            if (sBuilder.length() == 10) {
                sBuilder.deleteCharAt(0);
            }
            sBuilder.append(ch);
            if (strSet.contains(sBuilder.toString()) && !result.contains(sBuilder.toString())) {
                result.add(sBuilder.toString());
            }
            strSet.add(sBuilder.toString());
        }

        return result;

    }
}
//leetcode submit region end(Prohibit modification and deletion)

文章作者: 倪春恩
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 倪春恩 !