当前位置: 首页 > 图灵资讯 > 技术篇> #yyds干货盘点# LeetCode程序员面试金典:重复的DNA序列

#yyds干货盘点# LeetCode程序员面试金典:重复的DNA序列

来源:图灵教育
时间:2023-05-31 09:12:36

1.简述:

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

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

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

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

示例 1:

输入:s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT"

输出:["AAAAACCCCC","CCCCCAAAAA"]

示例 2:

输入:s = "AAAAAAAAAAAAA"

输出:["AAAAAAAAAA"]

2.实现代码:

class Solution {    static final int L = 10;    public List<String> findRepeatedDnaSequences(String s) {        List<String> ans = new ArrayList<String>();        Map<String, Integer> cnt = new HashMap<String, Integer>();        int n = s.length();        for (int i = 0; i <= n - L; ++i) {            String sub = s.substring(i, i + L);            cnt.put(sub, cnt.getOrDefault(sub, 0) + 1);            if (cnt.get(sub) == 2) {                ans.add(sub);            }        }        return ans;    }}