Skip to content

Latest commit

 

History

History

0187.repeated-dna-sequences

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

题目描述

所有 DNA 都由一系列缩写为 A,C,G 和 T 的核苷酸组成,例如:“ACGAATTCCG”。在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助。

编写一个函数来查找目标子串,目标子串的长度为 10,且在 DNA 字符串 s 中出现次数超过一次。

 

示例:

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

解题思路

  1. hash table

具体解法

Golang

func findRepeatedDnaSequences(s string) []string {
	sMap := make(map[string]bool)
	var res []string
	for i := 0; i < len(s)-9; i++ {
		if _, ok := sMap[s[i:i+10]]; ok {
			if sMap[s[i:i+10]] == true {
				res = append(res, s[i:i+10])
			}
			sMap[s[i:i+10]] = false
		} else {
			sMap[s[i:i+10]] = true
		}
	}
	return res
}