AlgoMooc
← 返回题库

N0025. 0520-等距二进制判断

中等通过率 48% · 提交 29 · 通过 14
模拟字符串数学

小慕在分析一个二进制数时,定义了一种特殊的距离:相邻两个1之间0的个数称为它们之间的距离。例如,二进制数1001011中,从左到右相邻两个1之间的距离分别是2、1、0。 现在,如果一个整数转换成二进制数后满足以下两个条件: 1. 二进制表示中至少包含3个1 2. 所有相邻的1之间的距离都相等 小慕就把这个数称为“数”。例如,21(二进制为10101)、60(二进制为111100)、146(二进制为10010010)都是等距二进制数。

提示:带虚线的词点一下有通俗解释。

输入描述

现给定一个输入,整数0 <= n < (2^31-1)

输出描述

如果 n 是等距二进制,请输出它的距离,如果不是等距二进制,请输出 -1

示例

示例 1

输入

21

输出

1

说明:二进制为 10101,距离为 1

示例 2

输入

60

输出

0

说明:二进制为 111100,距离为 0

示例 3

输入

146

输出

2

说明:二进制为 10010010,距离为 2

示例 4

输入

2

输出

-1

说明:二进制为 10,不满足条件 1 ,非等距二进制

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解(训练营专属)

登录后查看题目图解

题目图解为训练营学员专属内容,请先登录。

微信扫码登录还不是训练营学员?了解训练营 →
写完代码点「提交」,将对全部测试用例判题。