【LeetCode】693. 交替位二進位制數
阿新 • • 發佈:2018-11-03
1.題目
給定一個正整數,檢查他是否為交替位二進位制數:換句話說,就是他的二進位制數相鄰的兩個位數永不相等。
交替位二進位制數
2.思路
step1:十進位制轉換成二進位制,除二取餘。
step2:把這次的餘數(i)與下次的餘數(j)進行比較,若相等返回false
3.程式碼
bool hasAlternatingBits(int n) {
int m=n;
int i=-1,j=-1;
while(m!=0){
m=n/2;
i=n%2;
n=m;
j= n%2;
if(i==j) return false;
}
return true;
}
4.優秀案例
把所有符合的交替二進位制位的資料存放在s1,s2中,遍歷s1,s2,若沒有與n相等的,則證明n不屬於其中。
bool hasAlternatingBits(int n) {
int s1 = 1;
int s2 = 2;
int t = 17;
while(--t){
if(s1==n||s2==n){
return 1;
}
s1 = s1*4+1;//結尾位1
s2 = s2*4+2;//結尾為0
}
return 0;