693. 交替位二进制数

115 阅读1分钟

题目:
给定一个正整数,检查它的二进制表示是否总是 0、1 交替出现:换句话说,就是二进制表示中相邻两位的数字永不相同。
解法:
注意revert是将expectBit在0和1之间转换,而不是取反。

func hasAlternatingBits(n int) bool {
	expectBit := 1 & n
	for n > 0 {
		if expectBit ^ (1 & n) == 1{
			return false
		}
		n = n >> 1
		expectBit = revert(expectBit)
	}
	return true
}

func revert(n int) int{
	if n == 0 {
		return 1
	}
	return 0
}