the idea is really simple :) the binary of power of fours have only one 1 and the 1 is in the odd position of the binary. ex: bin(4^0)=1 (has only one 1 and the 1 is in an odd position), bin(4^1)=100 (has only one 1 and the 1 is in an odd position). Same can be said about all the power of fours.
In this code, Ive a counter to count the number of 1's in binary, and have a flag to see where the 1 occurs. The flag is set if the 1 is in a odd position.
For the num to be a power of four, the counter must equal 1 and flag must equal True
class Solution(object): def isPowerOfFour(self, num): """ :type num: int :rtype: bool """ if num<0: return False count=0 oddFlag=False i=3 while num!=0: if num&1==1: count+=1 if i%2==1: oddFlag=True num>>=1 i+=1 if count==1 and oddFlag==True: return True return False