题解 | #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()


全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 11:30
仁者伍敌:kpi都懒得刷了属于是
点赞 评论 收藏
分享
06-20 19:40
中原工学院 Java
网络存储:十几天不会让你拉人办卡就结束了吧?
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-11 13:34
offe从四面八方来:我真的没时间陪你闹了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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