博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
边工作边刷题:70天一遍leetcode: day 4
阅读量:5086 次
发布时间:2019-06-13

本文共 1272 字,大约阅读时间需要 4 分钟。

Repeated DNA Sequences

要点:可以用rolling hash做,不过只beat了7%的python解法,还是用bit数组快。rolling hash还是就用左边高位吧,别老变来变去的,这样每次取余去掉高位。

错误点:rolling hash:rolling的公式可不是+=

All DNA is composed of a series of nucleotides abbreviated as A, C, G, and T, for example: "ACGAATTCCG". When studying DNA, it is sometimes useful to identify repeated sequences within the DNA.

Write a function to find all the 10-letter-long sequences (substrings) that occur more than once in a DNA molecule.

For example,

Given s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT",Return:["AAAAACCCCC", "CCCCCAAAAA"].
class Solution(object):    def findRepeatedDnaSequences(self, s):        """        :type s: str        :rtype: List[str]        """        n = len(s)        res = []        if n<11: return res        hmap = {}        hval = 0        cmap = {'A':0,'C':1,'G':2,'T':3}        for i in xrange(10):            hval = (hval<<2 & 0xfffff) + cmap[s[i]]                hmap[hval]=1        # print bin(hval)        for i in xrange(10, n):            hval = (hval<<2 & 0xfffff) + cmap[s[i]]            if hval in hmap and hmap[hval]==1:                res.append(s[i-9:i+1])            if hval not in hmap:                hmap[hval]=0            hmap[hval]+=1        return res

转载于:https://www.cnblogs.com/absolute/p/5544411.html

你可能感兴趣的文章
c#自定义控件中的事件处理
查看>>
IOS--沙盒机制
查看>>
使用 JointCode.Shuttle 访问任意 AppDomain 的服务
查看>>
sqlite的坑
查看>>
digitalocean --- How To Install Apache Tomcat 8 on Ubuntu 16.04
查看>>
【题解】[P4178 Tree]
查看>>
Mongo自动备份
查看>>
cer证书签名验证
查看>>
synchronized
查看>>
【深度学习】caffe 中的一些参数介绍
查看>>
Python-Web框架的本质
查看>>
QML学习笔记之一
查看>>
App右上角数字
查看>>
从.NET中委托写法的演变谈开去(上):委托与匿名方法
查看>>
小算法
查看>>
201521123024 《java程序设计》 第12周学习总结
查看>>
新作《ASP.NET MVC 5框架揭秘》正式出版
查看>>
IdentityServer4-用EF配置Client(一)
查看>>
WPF中实现多选ComboBox控件
查看>>
读构建之法第四章第十七章有感
查看>>