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

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

国际空间研究组织 | ISRO CS 2016 |问题 46

这是一道来自国际空间研究组织的计算机科学考试题目,要求编写一个程序,将一个整数转换成其二进制形式的字符串,并计算该字符串中连续1的最大个数。

题目描述

给定一个整数 n,您需要编写一个程序来找到其二进制形式的字符串,并计算该字符串中连续的1的最大个数。

输入格式

一个整数 n

输出格式

连续的1的最大个数。

输入样例
14
输出样例
3
解释

14的二进制表示为 1110,其中最长连续的1有3个。

解题思路

本题思路比较简单,先将整数转换成二进制字符串,然后使用正则表达式匹配连续的1的个数,找到最大值即可。

代码实现
def max_consecutive_ones(n: int) -> int:
    # 将整数转换成二进制字符串
    bin_str = bin(n)[2:]
    # 正则表达式匹配连续的1的个数
    import re
    max_ones = 0
    for match in re.finditer(r'1+', bin_str):
        length = match.end() - match.start()
        if length > max_ones:
            max_ones = length
    return max_ones

print(max_consecutive_ones(14))  # 3

代码中使用了类型注解和正则表达式。如果您对这些不太熟悉,可以参考相关文档进行学习。