题解 | #重复的DNA序列#
重复的DNA序列
https://www.nowcoder.com/practice/fe9099e5308042a8af2f7aabdb3719fe?tpId=196&tqId=39413&ru=/exam/oj
2023.12.14 笔试题
之前在LeetCode做过一样的题,对输出的顺序不做要求,顺利AC
笔试题通过71%,做完来看,需要引入两个hash表,一个记录出现次数,一个记录出现位置
package main import "sort" // import ( // "fmt" // "go/scanner" // ) /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param DNA string字符串 1 * @return string字符串一维数组 */ func repeatedDNA( DNA string ) []string { // write code here ans := []string{} hash1 := make(map[string]int) hash2 := make(map[string]int) for i := 0; i <= len(DNA)-10; i++ { sub := DNA[i : i+10] hash1[sub]++ if hash1[sub] == 2 { ans = append(ans, sub) }else{ hash2[sub] = i } } sort.Slice(ans, func(i, j int) bool{ return hash2[ans[i]] < hash2[ans[j]] }) return ans }