版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zjucor/article/details/88928596
Given a number N
, return a string consisting of "0"
s and "1"
s that represents its value in base -2
(negative two).
The returned string must have no leading zeroes, unless the string is "0"
.
Example 1:
Input: 2 Output: "110" Explantion: (-2) ^ 2 + (-2) ^ 1 = 2
Example 2:
Input: 3 Output: "111" Explantion: (-2) ^ 2 + (-2) ^ 1 + (-2) ^ 0 = 3
Example 3:
Input: 4 Output: "100" Explantion: (-2) ^ 2 = 4
Note:
0 <= N <= 10^9
思路:
class Solution(object):
def baseNeg2(self, N):
"""
:type N: int
:rtype: str
"""
if N==0: return '0'
bit=0
res=[]
while N!=0:
# print(N)
if N%2==0: res.append(0)
else:
N-=(1 if bit%2==0 else -1)
res.append(1)
N=N//2
bit+=1
return ''.join(list(map(str,res[::-1])))