Skip to content

Latest commit

 

History

History
33 lines (26 loc) · 916 Bytes

693. 交替位二进制数.md

File metadata and controls

33 lines (26 loc) · 916 Bytes

693. 交替位二进制数

题目传送门

点击这里

解题思路

题意是判断一个整数是否是交替位二进制数,比如:"10101"就是交替位二进制数,"100"不是。可以使用二进制取余得到每一位的数字,然后判断和前一位是否相同,也可以使用位运算,将n与n>>1异或,如果得到的数全是1,那说明是交替位二进制数。

代码

func hasAlternatingBits(n int) bool {
    // 利用二进制的思想
    for pre := 2; n != 0; n /= 2 {
        cur := n % 2 // 取出从低到高的每一位,用pre存前一位
        if cur == pre {
            return false
        }
        pre = cur
    }
    return true
}
func hasAlternatingBits(n int) bool {
    // 利用二进制的思想
    n = n ^ (n >> 1)
    return n & (n+1) == 0
}