我在Hackerrank中编写代码。最近问题说,将十进制转换为基数2,然后计算二进制数中的最大连续1。首先,我提出以下解决方案。它工作正常。但即使我写了它,我也不理解它的计数部分。
代码是
FileInputStream
在上面的代码中,我想变量mmax会给我最大连续数1,但它给出的值有(最大连续-1),所以我只是写了这样并提交了代码。但我很好奇。为什么它这样工作。我对代码的工作方式有点困惑。
谢谢
答案 0 :(得分:0)
假设你有这个二进制序列:
11110
您的代码将从第一个和第二个开始比较:
|11|110 1 && 1 -> max = 1
1|11|10 1 && 1 -> max = 2
11|11|0 1 && 1 -> max = 3
111|10| 1 && 0 -> max = 3
你可以看到,虽然有4个1你只进行3次比较,所以你的最大值总是为实际最大值的-1。您可以在for循环后添加mmax += 1
来解决此问题。