693.binary-number-with-alternating-bits.go 279 B

12345678910111213141516
  1. func hasAlternatingBitsNaive(n int) bool {
  2. for mask := ^(n & 1); n != 0; n >>= 1 {
  3. next := n & 1
  4. if mask == next {
  5. return false
  6. }
  7. mask = next
  8. }
  9. return true
  10. }
  11. func hasAlternatingBits(n int) bool {
  12. for n ^= n >> 1; n != 0 && n&1 == 1; n >>= 1 {
  13. }
  14. return n == 0
  15. }