【发布时间】:2017-05-20 13:18:32
【问题描述】:
问题:将给定的十进制数转换为二进制并计算连续的1并显示它
示例案例 1: 5的二进制表示是101,所以连续1的最大个数是1。
示例案例 2: 13 的二进制表示是 1101 ,所以连续 1 的最大个数是 2。
解决方案:
#!/bin/python3
import sys
n = int(input().strip())
result = []
counter = 1
def get_binary(num):
if num == 1:
result.append(num)
adj(result)
else:
result.append(num%2)
get_binary(int(num/2))
def adj(arr):
global counter
for x in range(0,len(arr)-1):
if arr[x] == 1 and (arr[x] == arr[x+1]):
counter += 1
print(counter)
get_binary(n)
它没有通过所有示例测试用例。我做错了什么?
【问题讨论】:
-
试试 115。你会得到 5,你需要 3。你正在计算 所有 1 的数组,而你必须保留最长的一个。
-
什么情况下不通过?在这些情况下它会做什么?请按照发布指南的要求展示这些内容。
-
这与您的测试用例无关,但您的二进制文件是向后的
-
@Jean-FrançoisFabre 我用这个代码得到 4。
-
哦,那是因为最后一个 1s 字符串计数错误。 4确实。双重错误。
标签: python