1017. 负二进制转换
给你一个整数 n ,以二进制字符串的形式返回该整数的 负二进制(base -2)表示。
注意,除非字符串就是 "0",否则返回的字符串中不能含有前导零。
示例 1:
输入:n = 2
输出:"110"
解释:(-2)2 + (-2)1 = 2
示例 2:
输入:n = 3
输出:"111"
解释:(-2)2 + (-2)1 + (-2)0 = 3
示例 3:
输入:n = 4
输出:"100"
解释:(-2)2 = 4
提示:
0 <= n <= 10^9
解答:
class Solution {
public String baseNeg2(int N) {
// java和除法运算与模运算是取绝对值做运算,然后加个负号。所以,不能直接用java的 / 运算符,偶数不用管,直接除,奇数的话,先减去1,再做除运算。
if(N == 0)
return "0";
String result = "";
int n = N;
while(n != 0){
if(n % 2 == 0){//与n%(-2)只差一个符号关系,如果是0就是说这一位为0,符号关系自然也就不用考虑了
result = "0" + result;
n = n / (-2);
}else {
result = "1" + result;
n = (n - 1) / (-2);
}
}
return result;
}
}