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 条评论
登录 后参与评论

相关文章

来自专栏大闲人柴毛毛

剑指offer代码解析——面试题21包含min函数的栈

题目:实现一个栈,要求使用O(1)时间获取栈中最小值,O(1)执行pop、push操作。    分析:要获取栈的最小值,我们首先想到的思路就是使用一个全局...

3728
来自专栏个人随笔

房上的猫:StringBuffer类

一.使用StringBuffer类  StringBuffer类位于java.lang包中,是String类的增强类  步骤:   1.声明StringBuff...

35515
来自专栏Java帮帮-微信公众号-技术文章全总结

13(01)总结StringBuffer,StringBuilder,数组高级,Arrays,Integer,Character

1:StringBuffer(掌握) (1)用字符串做拼接,比较耗时并且也耗内存,而这种拼接操作又是比较常见的,为了解决这个问题,Java就提供了 一...

4245
来自专栏无题

链式存储线性表(LinkedList)数据结构解析

LinkedList内部是通过链表来实现的 一、节点分析 LinkedList内部是通过链表来实现的,那么就少不了节点,所以在源码中必然能找到这样一个节点。 ...

3336
来自专栏静默虚空的博客

Java正则速成秘籍(一)之招式篇

导读 正则表达式是什么?有什么用? 正则表达式(Regular Expression)是一种文本规则,可以用来校验、查找、替换与规则匹配的文本。 又爱又恨的正...

1928
来自专栏大闲人柴毛毛

剑指offer代码解析——面试题22栈的压入、弹出序列

本题的详细分析过程均在代码的注释中: import java.util.Stack; /** * 题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断...

3037
来自专栏java初学

值传递和引用传递

2626
来自专栏机器学习入门

挑战程序竞赛系列(75):4.3强连通分量分解(2)

挑战程序竞赛系列(75):4.3强连通分量分解(2) 传送门:POJ 3180: The Cow Prom 题意: 求结点大于等于2的强连通分量个数。 直接上...

2106
来自专栏武培轩的专栏

剑指Offer-栈的压入、弹出序列

题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压...

3477
来自专栏郭耀华‘s Blog

Java集合框架(四)—— Queue、LinkedList、PriorityQueue

Queue接口   Queue用于模拟了队列这种数据结构,队列通常是指“先进先出”(FIFO)的容器。队列的头部保存在队列中时间最长的元素,队列的尾部保存...

3976

扫码关注云+社区

领取腾讯云代金券