栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

leetcode(力扣) 187. 重复的DNA序列 (滑动窗口)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

leetcode(力扣) 187. 重复的DNA序列 (滑动窗口)

题目在这:https://leetcode-cn.com/problems/repeated-dna-sequences/

思路分析:

一道找子串的问题。
说一个可以用的方法,偷鸡的方法就不说了。

我们可以维护一个大小为10的滑动窗口。

每次判断窗口内的字符串是否出现过,如果没有则加入哈希表,如果出现过,则哈希表中对应的val 加1.最后把所有val大于1的都输出就行了~。

完整代码

class Solution:
    def findRepeatedDnaSequences(self, s: str) -> List[str]:
        hs = {}
        if len(s) < 10:
            return [] 
        i = 0
        j = 10
        # i j 维护滑动窗口的头和尾。
        while j != len(s)+1:
            if s[i:j] not in hs:
                hs[s[i:j]]  = 1
            else:
                hs[s[i:j]] += 1
            i += 1
            j += 1
        res  = []
        for i in hs:
            if hs[i] >1:
                res.append(i)

        return res

这道题N天前写的,可以直接在前面的while判断 ,如果出现过则说明val必然大于1了,直接加入数组就行,没必要后面再加for了。。。。。就仅作参考吧~

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/317592.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号