Skip to content

Commit 27ce06d

Browse files
Create 187. 重复的DNA序列.md
1 parent 2bc38fb commit 27ce06d

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed
+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
#### 187. 重复的DNA序列
2+
3+
难度:中等
4+
5+
---
6+
7+
**DNA序列**  由一系列核苷酸组成,缩写为 `'A'``'C'``'G'` 和 `'T'`.。
8+
9+
* 例如,`"ACGAATTCCG"` 是一个 **DNA序列**
10+
11+
在研究 **DNA** 时,识别 DNA 中的重复序列非常有用。
12+
13+
给定一个表示 **DNA序列** 的字符串 `s` ,返回所有在 DNA 分子中出现不止一次的  **长度为 `10`**  的序列(子字符串)。你可以按 **任意顺序** 返回答案。
14+
15+
**示例 1:**
16+
17+
```
18+
输入:s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT"
19+
输出:["AAAAACCCCC","CCCCCAAAAA"]
20+
```
21+
22+
**示例 2:**
23+
24+
```
25+
输入:s = "AAAAAAAAAAAAA"
26+
输出:["AAAAAAAAAA"]
27+
```
28+
29+
**提示:**
30+
31+
* `0 <= s.length <= 10^5`
32+
* `s[i]``==``'A'``'C'``'G'` or `'T'`
33+
34+
---
35+
哈希表 + 固定窗口的滑动:
36+
37+
固定窗口内的字符作为哈希表的 key, value 为出现的次数。次数等于 2 则加入到 res 里。
38+
39+
```Go
40+
func findRepeatedDnaSequences(s string) []string {
41+
var res []string
42+
hashmap := make(map[string]int)
43+
for i := 0; i <= len(s) - 10; i++ {
44+
sub := s[i:i+10]
45+
hashmap[sub]++
46+
if hashmap[sub] == 2 {
47+
res = append(res, sub)
48+
}
49+
}
50+
return res
51+
}
52+
```

0 commit comments

Comments
 (0)