Given an integer, write a function to determine if it is a power of two.
給出1個整數,寫1個函數判斷它是不是是2的次方數。
這道題和另外一道判斷是不是是3的次方數的題目很像,但是這個更簡單,由于有1個2進制的東西存在,我們要判斷1個數是否是2的次方數,不用去1次次除以2,也不用用log去算,直接轉換成2進制,如果是2的次方數,那1定是最高位為1,其余位均為0的2進制數,所以只用判斷這個2進制數是否是符合這個情況就能夠了。
另外還有1個地方要謹慎,與判斷3的次方數的題目描寫有1點不同在于,這里沒說給出的是非負數。。。所以1定還對負數的情況進行判斷,很陰險。
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;
}
}
版權所有:http://blog.csdn.net/cloudox_
下一篇 HDU5901大素數模板