LeetCode每日一题(2023/4/6)


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;
    }

}

  目录