Given an integer, write a function to determine if it is a power of two.
給出1個(gè)整數(shù),寫(xiě)1個(gè)函數(shù)判斷它是不是是2的次方數(shù)。
這道題和另外一道判斷是不是是3的次方數(shù)的題目很像,但是這個(gè)更簡(jiǎn)單,由于有1個(gè)2進(jìn)制的東西存在,我們要判斷1個(gè)數(shù)是否是2的次方數(shù),不用去1次次除以2,也不用用log去算,直接轉(zhuǎn)換成2進(jìn)制,如果是2的次方數(shù),那1定是最高位為1,其余位均為0的2進(jìn)制數(shù),所以只用判斷這個(gè)2進(jìn)制數(shù)是否是符合這個(gè)情況就能夠了。
另外還有1個(gè)地方要謹(jǐn)慎,與判斷3的次方數(shù)的題目描寫(xiě)有1點(diǎn)不同在于,這里沒(méi)說(shuō)給出的是非負(fù)數(shù)。。。所以1定還對(duì)負(fù)數(shù)的情況進(jìn)行判斷,很陰險(xiǎn)。
public class Solution {
public boolean isPowerOfTwo(int n) {
if (n < 0) return false;
String binaryStr = Integer.toBinaryString(n);
for (int i = 0; i < binaryStr.length(); i++) {
if (i == 0 && binaryStr.charAt(i) != '1') return false;
else if (i > 0 && binaryStr.charAt(i) != '0') return false;
}
return true;
}
}
版權(quán)所有:http://blog.csdn.net/cloudox_