title
给你一个整数 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即可。它可以转任意进制。处理好负数即可。