day89 1017. 负二进制转换(Java)

97 阅读1分钟

题目来源: 1017. 负二进制转换

题目描述:

  • 描述: 给你一个整数 n ,以二进制字符串的形式返回该整数的 负二进制(base -2)表示。
    注意,除非字符串就是 "0",否则返回的字符串中不能含有前导零。
  • 难度: 简单\color{5AB726}{简单}
  • 示例:
输入:n = 2
输出:"110"
解释:(-2)^2 + (-2)^1 = 2

具体实现

class Solution {
    public String baseNeg2(int n) {
        if (n == 0 || n == 1) {
            return String.valueOf(n);
        }
        StringBuilder res = new StringBuilder();
        while (n != 0) {
            int remainder = n & 1;
            res.append(remainder);
            n -= remainder;
            n /= -2;
        }
        return res.reverse().toString();
    }
}