题目描述:
给出数字
N
,返回由若干"0"
和"1"
组成的字符串,该字符串为N
的负二进制(base -2
)表示。除非字符串就是
"0"
,否则返回的字符串中不能含有前导零。示例 1:
输入:2 输出:"110" 解释:(-2) ^ 2 + (-2) ^ 1 = 2示例 2:
输入:3 输出:"111" 解释:(-2) ^ 2 + (-2) ^ 1 + (-2) ^ 0 = 3示例 3:
输入:4 输出:"100" 解释:(-2) ^ 2 = 4提示:
0 <= N <= 10^9
算法:
参考了下面的这个博客,讲解的很好,我转换成了C++的代码。
class Solution {
public:
string baseNeg2(int N) {
string s = "";
while(N)
{
int mod = N % (-2);
if(mod < 0)
{
N = N/(-2) + 1;
mod = mod + 2;
}
else
N = N / (-2);
s = to_string(mod) + s;
}
if(s=="")
return "0";
else
return s;
}
};