题解 | #DNA序列#

DNA序列

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

去一个个长度为N的子串里找字母并计数,放入字典,最后排序

while True:
    try:
        sstr=input()
        N=int(input())
        adict={}
        for i in range(len(sstr)+1-N):#因为range取不到最大的,所以要加1
            subs=sstr[i:i+N]
            sum=subs.count("G")+subs.count("C")
            if sum not in adict.values():#该句不可省,必须去重字典无序,排序后更不可预见哪个在前
                adict[subs]=sum
        alist=sorted(adict.items(),key=lambda stu:(stu[1]))
        print(alist[-1][0])
    except:
        break

稍微改进一下,主要涉及排序的方法,因为sorted函数是稳定排序,即相同的值原来在前面的排序后还在前面,可以利用这一点少写一些代码,注意与上面例子比较

while True:
    try:
        sstr=input()
        N=int(input())
        adict={}
        for i in range(len(sstr)+1-N):#因为range取不到最大的,所以要加1
            subs=sstr[i:i+N]
            sum=subs.count("G")+subs.count("C")
#             if sum not in adict.values():#可以省略该句
            adict[subs]=sum
        alist=sorted(adict.items(),key=lambda stu:(stu[1]),reverse=True) #稳定排序,逆序排序,可以预见到大数始终在前
        print(alist[0][0])
    except:
        break
全部评论

相关推荐

看到这个内容真是闹麻了。。。。。。现在有了AI以后很多人面试都会作弊吗? 那对老老实实面试的人岂不是不公平....
重生之我要干前端:放宽心,作弊很明显的,面试官也不是傻子,而且这世上更多的肯定是依靠自己的知识的人,所以放宽心提升自己最重要
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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