1017. 负二进制转换

2023/04/08 leetcode 共 472 字,约 2 分钟

title

problem link

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

solution

负二进制的表达。

和二进制一样,但记得要处理下-1,每一位可能是-1,0,1,要把-1转换下,变成1.

class Solution:
    def baseNeg2(self, n: int) -> str:
        if n == 0:
            return '0'
        ans = []
        b = -2
        while n != 0:
            x = n % b
            ans.append(str(abs(x)))
            if x < 0:
                x += abs(b)  # 变成正数
            n = (n - x) // b
        ans = ans[::-1]
        return "".join(ans)

延伸

转负三进制怎么办

b=-3即可。它可以转任意进制。处理好负数即可。

Search

    Table of Contents