美文网首页Python
【hackrank】求取一个数二进制最大连续的1之和

【hackrank】求取一个数二进制最大连续的1之和

作者: 王诗翔 | 来源:发表于2018-09-24 11:46 被阅读8次

突然发现中文不是很好,不是很好讲述标题。

还是以实例说明:

输入5,二进制为101,没有1连续出现,即连续出现1的次数是1,结果为1
输入13,二进制1101,11连续出现,和为2,结果为2

你觉得应该怎么解呢?不妨下方留言。


这里提供一个很精炼的答案:

    n = int(input())

    numbers = str(bin(n)[2:]).split('0')
    lenghts = [len(num) for num in numbers]
    print(max(lenghts))

先将数字转为2进制,然后按0分割,求取长度。因为是二进制,某个位最大数位1,所以长度就是和。

相关文章

网友评论

    本文标题:【hackrank】求取一个数二进制最大连续的1之和

    本文链接:https://www.haomeiwen.com/subject/grbcoftx.html