📅  最后修改于: 2023-12-03 15:07:34.559000             🧑  作者: Mango
这是一道来自国际空间研究组织的计算机科学考试题目,要求编写一个程序,将一个整数转换成其二进制形式的字符串,并计算该字符串中连续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
代码中使用了类型注解和正则表达式。如果您对这些不太熟悉,可以参考相关文档进行学习。