在 C++ 中转换为负二进制
假设我们有一个数字 N,我们必须找到一个由“0”和“1”组成的字符串,表示其在负二进制(负二)。返回的字符串不应该有前导零,除非该字符串恰好为“0”。因此,如果输入像 2,则输出将是“110”,因为 (-2)^2 + (-2)^1 + (-2)^0 = 2。
为了解决这个问题,我们将遵循以下步骤:
ret := 一个空字符串
如果 N = 0,则返回“0”
当 N 非 0 时
rem := N mod (– 2)
N := N / (-2)
如果 rem < 0 且 rem := rem + 2,并且 N 增加 1
ret := ret + rem 作为字符串
反转字符串 ret
返回 ret。
让我们看看以下实现以获得更好的理解:
示例
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
string baseNeg2(int N) {
string ret = "";
if(N == 0) return "0";
while(N){
int rem = N % (-2);
N /= -2;
if(rem < 0) rem += 2, N++;
ret += to_string(rem);
}
reverse(ret.begin(), ret.end());
return ret;
}
};
main(){
Solution ob;
cout << (ob.baseNeg2(17));
}输入
17
输出
10001
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言程序设计
C++
C#
MongoDB
MySQL
Javascript
PHP