社区常称:等距二进制判断
通过率 52% · 提交 67 · 通过 35
小慕在分析一个二进制数时,定义了一种特殊的距离:相邻两个1之间0的个数称为它们之间的距离。例如,二进制数1001011中,从左到右相邻两个1之间的距离分别是2、1、0。 现在,如果一个整数转换成二进制数后满足以下两个条件: 1. 二进制表示中至少包含3个1 2. 所有相邻的1之间的距离都相等 小慕就把这个数称为“数”。例如,21(二进制为10101)、60(二进制为111100)、146(二进制为10010010)都是等距二进制数。
这类题属于算法机考高频题型中「100分 / 字符串」方向的高频题型,通常考察对「100分 / 字符串」的建模能力与边界条件处理。掌握本题的解题思路后,可举一反三应对同类真题方向,稳步提升机考通过率。
提示:带虚线的词点一下有通俗解释。
现给定一个输入,整数0 <= n < (2^31-1)
如果 n 是等距二进制,请输出它的距离,如果不是等距二进制,请输出 -1
示例 1
输入示例
21
输出示例
1
二进制为 10101,距离为 1
示例 2
输入示例
60
输出示例
0
二进制为 111100,距离为 0
示例 3
输入示例
146
时间限制 1000 ms · 内存限制 128 MB
本平台为独立第三方培训机构,与华为技术有限公司无任何关联;课程的服务内容与权益以购买协议为准,学习效果因个人情况而异。「华为 OD」「华为可信」等仅为对岗位与考试方向的客观描述,相关商标归各自权利人所有。
登录后可查看你在本题的历史提交,以及每次的各用例通过情况。
输出示例
2
二进制为 10010010,距离为 2
示例 4
输入示例
2
输出示例
-1
二进制为 10,不满足条件 1 ,非等距二进制
© 2026 广州慕课网络科技有限公司 · 吴师兄学算法官网 版权所有