专栏首页机器学习入门LWC 53:693. Binary Number with Alternating Bits

LWC 53:693. Binary Number with Alternating Bits

LWC 53:693. Binary Number with Alternating Bits

传送门:693. Binary Number with Alternating Bits

Problem:

Given a positive integer, check whether it has alternating bits: namely, if two adjacent bits will always have different values.

Example 1:

Input: 5 Output: True Explanation: The binary representation of 5 is: 101

Example 2:

Input: 7 Output: False Explanation: The binary representation of 7 is: 111.

Example 3:

Input: 11 Output: False Explanation: The binary representation of 11 is: 1011.

Example 4:

Input: 10 Output: True Explanation: The binary representation of 10 is: 1010.

思路: 熟悉JAVA接口的知道,Integer类可以直接把数字转为2进制串。

代码如下:

    public boolean hasAlternatingBits(int n) {
        String binary = Integer.toBinaryString(n);
        char[] cs = binary.toCharArray();
        int bit = cs[0] - '0';
        for (int i = 1; i < cs.length; ++i) {
            if (bit == cs[i] - '0') return false;
            bit = cs[i] - '0';
        }
        return true;
    }

当然,你也可以自己解析每一位,代码如下:

    public boolean hasAlternatingBits(int n) {
        int bit = n >> 0 & 1;
        n >>= 1;
        while (n > 0) {
            if (bit == (n & 1)) return false;
            bit = n & 1;
            n >>= 1;
        }
        return true;
    }

或者合并到一块:

    public boolean hasAlternatingBits(int n) {
        int bit = -1;
        while (n > 0) {
            if (bit == (n & 1)) return false;
            bit = n & 1;
            n >>= 1;
        }
        return true;
    }    

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 挑战程序竞赛系列(57):4.6数列上的分治法

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.n...

    用户1147447
  • 挑战程序竞赛系列(91):3.6凸包(2)

    挑战程序竞赛系列(91):3.6凸包(2) 传送门:POJ 1113: Wall 题意参考hankcs: http://www.hankcs.com/pro...

    用户1147447
  • LWC 54:696. Count Binary Substrings

    LWC 54:696. Count Binary Substrings 传送门:696. Count Binary Substrings Problem: G...

    用户1147447
  • Linux 的 chmod 命令,对一个目录及其子目录所有文件添加权限

    微风-- 轻许--
  • android RecycleView Adapter简单封装

    早些时候我们使用系统提供个的BaseAdapter的时候为了满足大家的需要,我们总会对BaseAdapter做一层上层的封装,然后对于实际业务我们只需要关心ge...

    xiangzhihong
  • ARKit示例 - 第2部分:平面检测+可视化

    在我们的第一个hello world ARKit应用程序中,我们设置了我们的项目并渲染了一个虚拟3D立方体,可以在现实世界中渲染并在您移动时进行跟踪。

    iOSDevLog
  • Python爬虫从入门到放弃(十六)之 Scrapy框架中Item Pipeline用法

    当Item 在Spider中被收集之后,就会被传递到Item Pipeline中进行处理 每个item pipeline组件是实现了简单的方法的python类,...

    coders
  • C++ 实现银行排队服务模拟

    教程简介:使用 C++对银行排队服务进行模拟,以事件驱动为核心思想,手动实现模板链式队列、随机数产生器等内容,进而学习概率编程等知识。作为可选进阶,这个模型同时...

    李海彬
  • LeetCode 11. 盛最多水的容器

    https://frenxi.com/http-headers-you-dont-expect/

    编程之心
  • 如何在Ubuntu 14.04上使用Nginx和Php-fpm安全地托管多个网站

    众所周知,LEMP堆栈(Linux,nginx,MySQL,PHP)为运行PHP站点提供了无与伦比的速度和可靠性。但是,这种流行的堆栈的其他特性,如安全性和隔离...

    angel_郁

扫码关注云+社区

领取腾讯云代金券