📌  相关文章
📜  国际空间研究组织 | ISRO CS 2015 |问题 30(1)

📅  最后修改于: 2023-12-03 15:07:34.308000             🧑  作者: Mango

国际空间研究组织 | ISRO CS 2015 | 问题 30

该题目要求编写一个程序,可以找到一个数值的二进制表示中第一个连续1的长度。

示例

输入:22

输出:2

解释:22的二进制表示是10110,其中最长的连续1的长度是2。

思路
  • 将整数转换成二进制字符串
  • 遍历字符串,记录连续1的长度
  • 返回最长的连续1的长度
代码
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 语言标记代码块。