正解:
return ((n & (n-1))==0 && n>0);
我的错误答案:
package genius.wyx.Algorithms;
public class WYX231 {
public static boolean isPowerOfTwo(int n) {
String string = Long.toBinaryString(n).toString();
System.out.println(string);
System.out.println(string.charAt(0));
System.out.println(string.substring(1, string.length()));
System.out.println(Integer.parseInt(string.substring(1, string.length())));
if (n==1) {
return true;
}
if (string.charAt(0)=='1'&&Long.parseLong(string.substring(1, string.length()))==0)
return true;
return false;
}
public static void main(String[] args) {
System.out.println(isPowerOfTwo(32));
}
}
输出为 :
100000
1
00000
0
true
一看感觉是对的,但是在系统上运行报错如下:
Runtime Error Message:
Line 8: java.lang.NumberFormatException: For input string: "11111111111111111111"
Last executed input:
2097151
溢出