LC 187. 重复的DNA序列 (opens new window) (opens new window)
中等
# 问题描述
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'
# 词频统计
使用一个哈希表统计 所有长度为 的子串出现次数,当某个子串出现次数达到 次时,加入到结果列表中。
/**
* @param {string} s
* @return {string[]}
*/
var findRepeatedDnaSequences = function (s) {
const cache = new Map()
const length = s.length - 9
const ans = []
for (let i = 0; i < length; i++) {
const sub = s.substr(i, 10)
cache.set(sub, (cache.get(sub) || 0) + 1)
if (cache.get(sub) === 2) {
ans.push(sub)
}
}
return ans
}
- 时间复杂度:
- 空间复杂度:
上次更新: 2023/01/31 19:48:05
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 , 转载请注明出处!