693. 交替位二进制数

交替位二进制数

题目描述:

给定一个正整数,检查它的二进制表示是否总是 0、1 交替出现:换句话说,就是二进制表示中相邻两位的数字永不相同。

示例 1:

输入:n = 5
输出:true
解释:5 的二进制表示是:101
示例 2:

输入:n = 7
输出:false
解释:7 的二进制表示是:111.
示例 3:

输入:n = 11
输出:false
解释:11 的二进制表示是:1011.

提示:

1 <= n <= 231 - 1

思路:

时间复杂度:O(logn),空间复杂度O(1)

代码:

func hasAlternatingBits(n int) bool {
    var flag bool
    if n &1 == 1{
        flag = true
    }else{
        flag = false
    }
    n/=2
    for n != 0{
        if n %2 == 1 && flag == false{
            flag = true
        }else if n % 2 == 0 && flag == true{
            flag = false
        }else{
            return false
        }
        n/=2
    }
    return true
}

代码效率:

执行用时:0 ms, 在所有 Go 提交中击败了100.00%的用户
内存消耗:1.8 MB, 在所有 Go 提交中击败了82.19%的用户


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!