题解 | #DNA序列#

DNA序列

https://www.nowcoder.com/practice/e8480ed7501640709354db1cc4ffd42a

思路:滑动窗口加哈希表加排序,窗口长度为子串长度,用字典记录每个
窗口G和C出现的次数,然后转化为列表按次数降序、左索引升序排序,
assist[0][0]就是GC最多的第一个出现的子串左索引
from collections import defaultdict
def gc_ratio():
    dna = input()
    n = int(input())
    l = len(dna)
    left = 0
    count = defaultdict(lambda:0)
    while left<l-n+1:
        for i in range(left,left+n):
            if dna[i]=='C' or dna[i]=='G':
                count[left]+=1
        if count[left]==n:
            print(dna[left:left+n])
            return
        left+=1
    assist = list(count.items())
    assist.sort(key=lambda x:(-x[1],x[0]))
    print(dna[assist[0][0]:assist[0][0]+n])

gc_ratio()


全部评论

相关推荐

找到实习了&nbsp;给了150一天&nbsp;但是说是低代码&nbsp;值得去吗
码农索隆:是在没实习,可去,待个一两周,不行就润呗
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
今天 11:55
点赞 评论 收藏
分享
06-02 15:53
阳光学院 Java
点赞 评论 收藏
分享
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-07 18:05
哈哈哈哈哈感觉朋友找工作的已经疯掉了,直接上图
码农索隆:真老板娘:“我嘞个去,这不我当年的套路吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务