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中快速解决这个问题。方法很简单,
- 使用 bin()函数将十进制数转换为二进制数并删除前两个字符'0b',因为bin()函数以字符串形式返回数字的二进制表示并附加 '0b' 作为前缀。
- 使用 string 的split()方法分隔由零分隔的连续 1 的所有子字符串。
- 打印 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