刷题前唠嗑
LeetCode? 启动!!!
重复的DNA序列
题目链接:187. 重复的DNA序列
题目描述
代码和解题思路
func findRepeatedDnaSequences(s string) (ans []string) {
mp := map[string]int{}
for i := 0; i <= len(s)-10; i++ {
str := s[i:i+10]
mp[str]++
}
for k, v := range mp {
if v >= 2 {
ans = append(ans, k)
}
}
return ans
}
读完题目,两眼一闭,哈希暴力
- 直接截取长度为 10 的字符串塞进 map
- 遍历 map 看看有没有出现次数大于等于 2 的字符串,那就是需要返回给题目的字符串了
偷看大佬题解
什么哈希+滑动窗口+位运算缝合怪方法,好复杂,摆了
啊,别人的哈希暴力和我的还不一样,学习一下:
func findRepeatedDnaSequences(s string) (ans []string) {
mp := map[string]int{}
for i := 0; i <= len(s)-10; i++ {
sub := s[i:i+10]
mp[sub]++
if mp[sub] == 2 {
ans = append(ans, sub)
}
}
return ans
}
他把两步合并成一步了,当字符串重复出现两次就直接记录进 ans 数组返回,学习一下,代码量减少了。
结语
今天是摆烂躺平的一天,每日一题,能过就行