📅  最后修改于: 2023-12-03 15:07:34.308000             🧑  作者: Mango
该题目要求编写一个程序,可以找到一个数值的二进制表示中第一个连续1的长度。
输入:22
输出:2
解释:22的二进制表示是10110,其中最长的连续1的长度是2。
def get_longest_consecutive_ones(n):
binary_str = bin(n)[2:] # 将整数转换为二进制字符串
max_len = 0 # 最长连续1的长度
cur_len = 0 # 当前连续1的长度
for bit in binary_str:
if bit == '1':
cur_len += 1
max_len = max(max_len, cur_len) # 更新最长连续1的长度
else:
cur_len = 0 # 重置当前连续1的长度
return max_len
该函数使用了 Python 的内置函数 bin()
将整数转换为二进制字符串,然后遍历字符串,记录当前连续1的长度,当遇到0时,重置当前长度,并更新最长连续1的长度。最后返回最长连续1的长度。
代码片段上方使用了三个反引号呈现,表示这是一段代码,并使用 python
语言标记代码块。