【LeetCode】每日一题 2023_11_5 重复的DNA序列

文章目录

  • 刷题前唠嗑
  • 重复的DNA序列
    • 题目描述
    • 代码和解题思路
    • 偷看大佬题解
    • 结语

刷题前唠嗑

【LeetCode】每日一题 2023_11_5 重复的DNA序列_第1张图片
LeetCode? 启动!!!

重复的DNA序列

题目链接:187. 重复的DNA序列

题目描述

【LeetCode】每日一题 2023_11_5 重复的DNA序列_第2张图片

代码和解题思路

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
}

读完题目,两眼一闭,哈希暴力

  1. 直接截取长度为 10 的字符串塞进 map
  2. 遍历 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 数组返回,学习一下,代码量减少了。

结语

今天是摆烂躺平的一天,每日一题,能过就行

你可能感兴趣的:(LeetCode,每日一题,leetcode,算法,职场和发展)