给定一个正整数 N,找到并返回 N 的二进制表示中两个连续的 1 之间的最长距离。

如果没有两个连续的 1,返回 0 。

示例 1:

输入:22 输出:2 解释: 22 的二进制是 0b10110 。 在 22 的二进制表示中,有三个 1,组成两对连续的 1 。 第一对连续的 1 中,两个 1 之间的距离为 2 。 第二对连续的 1 中,两个 1 之间的距离为 1 。 答案取两个距离之中最大的,也就是 2 。

示例 2:

输入:5 输出:2 解释: 5 的二进制是 0b101 。

示例 3:

输入:6 输出:1 解释: 6 的二进制是 0b110 。

示例 4:

输入:8 输出:0 解释: 8 的二进制是 0b1000 。 在 8 的二进制表示中没有连续的 1,所以返回 0 。

提示:

  • 1 <= N <= 10^9
class Solution {
public:
int binaryGap(int N) {
if(N <= 1)
return 0;
vector<int> bits;
while(N)
{
int temp = N % 2;
bits.push_back(temp);
N /= 2;
}
int len = bits.size();
int first = -1;
int second = -1;
int MAX = 0;
for(int i = 0; i < len; i++)
{
if(bits[i] == 1)
{
if(first == -1)
{
first = i;
}
else if(second = -1)
{
second = i;
MAX = max(MAX, second - first);
second = -1;
first = i;
}
}
}
return MAX;
}
};

最新文章

  1. C++ STL之vector用法总结
  2. [sqoop1.99.7] sqoop入门-下载、安装、运行和常用命令
  3. php 简易购物习题
  4. java使用this关键字调用本类重载构造器
  5. error adding symbols: DSO missing from command line collect2: error: ld returned 1 exit status
  6. 01分数规划POJ2976(简单模板题)
  7. Android中通过广播方式调起第三方App
  8. Android模拟器常用命令收录
  9. 解读sample5
  10. iPhone应用中加入评分功能
  11. vscode同步设置&amp;扩展插件
  12. linux下删除.svn的方法
  13. 安装WebLogic的详细步骤
  14. java中的并发工具类
  15. g++和gcc的相同点和区别
  16. centos7 ambari安装HDP
  17. mssql sqlserver 将字段null(空值)值替换为指定值的三种方法分享
  18. B/S与C/S的优缺点
  19. Python 练习: 简单角色游戏程序
  20. 解决docker镜像无法下载的问题

热门文章

  1. Leetcode322. Coin Change零钱兑换
  2. leetcode 696
  3. get请求中文乱码
  4. 关于maven 把插件依赖一起打包进jar问题
  5. Servlet开发总结(一)
  6. SSH免密登录设置
  7. (2)卷积 &amp; 卷积和
  8. LUOGU P1779 魔鬼杀手_NOI导刊2010提高(03)
  9. HDU2056
  10. 利用HttpWebRequest通过POST Json数据在.net后台实现不同平台间的数据传输