package LeetCode_693 /** * 693. Binary Number with Alternating Bits * https://leetcode.com/problems/binary-number-with-alternating-bits/description/ * * 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. * */ class Solution { fun hasAlternatingBits(n: Int): Boolean { var n_ = n var lastBitIs1 = (n_ % 2) == 1//if odd number last bit must be 1 while (n_ > 0) { n_ = n_ shr 1//because the last bit had check in below, so here need shift first val curBit = n_ and 1 if (curBit == 1 && lastBitIs1) { //represent last one and current one both is 1 return false } else if (curBit == 0 && !lastBitIs1) { //represent last one and current one both is 0 return false } //check again lastBitIs1 = (n_ % 2) == 1 } return true } }