目录

1017:负二进制转换(1697 分)

力扣第 130 场周赛第 2 题

题目

给你一个整数 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 <= 109

分析

类似二进制转换,每步将商取负即可。

解答

1
2
3
4
5
6
7
class Solution:
    def baseNeg2(self, n: int) -> str:
        res = ''
        while n:
            n,r = -(n//2),n%2
            res += str(r)
        return res[::-1] or '0'

36 ms