📌  相关文章
📜  Python地图 |给定整数的二进制表示中最长连续 1 的长度

📅  最后修改于: 2022-05-13 01:55:40.445000             🧑  作者: Mango

Python地图 |给定整数的二进制表示中最长连续 1 的长度

给定一个数字 n,找出其二进制表示中最长的连续 1 的长度。

例子:

Input : n = 14
Output : 3
The binary representation of 14 is 1110.

Input : n = 222
Output : 4
The binary representation of 222 is 11011110.

我们有解决此问题的现有解决方案,请参阅二进制表示中最长连续 1 的长度链接。我们可以在Python中快速解决这个问题。方法很简单,

  1. 使用 bin()函数将十进制数转换为二进制数并删除前两个字符'0b',因为bin()函数以字符串形式返回数字的二进制表示并附加 '0b' 作为前缀。
  2. 使用 string 的split()方法分隔由零分隔的连续 1 的所有子字符串。
  3. 打印 1 的拆分子字符串的最大长度。
# Function to find Length of the Longest Consecutive
# 1's in Binary Representation
   
def maxConsecutive1(input):
     # convert number into it's binary
     input = bin(input)
  
     # remove first two characters of output string
     input = input[2:]
  
     # input.split('0') --> splits all sub-strings of 
     # consecutive 1's separated by 0's, output will 
     # be like ['11','1111']
     # map(len,input.split('0'))  --> map function maps
     # len function on each sub-string of consecutive 1's
     # max() returns maximum element from a list
     print (max(map(len, input.split('0'))))
   
# Driver program
if __name__ == '__main__':
    input = 222
    maxConsecutive1(input)

输出:

4