1、
class Solution {
public:
int findComplement(int num) {
int res = 0;
int t = 0;
string s = "";
while(num > 0)
{
t = num % 2;
num /= 2;
s += (t == 0) ? "1":"0";
}
for(int i = s.size() - 1; i >= 0; i--)
{
res = res * 2 + s[i] - '0';
}
return res;
}
};
2、
class Solution {
public:
int findComplement(int num) {
int res = 0;
double pos = 1;
while (num > 0)
{
res += (abs((num % 2) - 1) * pos);
num /= 2;
pos *= 2;
}
return res;
}
};
3、
class Solution {
public:
int findComplement(int num){
long temp = 1;
while (num >= temp){
temp <<= 1;
}
return (temp - 1 - num);
}
};
参考:
https://leetcode-cn.com/problems/number-complement/solution/cde-liang-chong-jie-fa-di-er-chong-hao-shi-0ms-by-/