Description:
Given a positive integer, output its complement number. The complement strategy is to flip the bits of its binary representation.
Note:
- The given integer is guaranteed to fit within the range of a 32-bit signed integer.
- You could assume no leading zero bit in the integer’s binary representation.
Example:
Input: 5 Output: 2 Explanation: The binary representation of 5 is 101 (no leading zero bits), and its complement is 010. So you need to output 2.
Input: 1 Output: 0 Explanation: The binary representation of 1 is 1 (no leading zero bits), and its complement is 0. So you need to output 0.
P.S.
Java 中十进制转二进制:https://www.cnblogs.com/vsign/p/7290594.html
class Solution {
public int findComplement(int num) {//int t = 0;
//int bin = 0;
int r = 0;
int result = 0;
List<Integer> a = new ArrayList<Integer>();
List<Integer> b = new ArrayList<Integer>();
while(num != 0){
r = num % 2;
num = num / 2;
//bin = r * Math().pow(10,t);
a.add(r);
//t++;
}
for (Integer c : a){
if (Integer.valueOf(c) == 1){
int lin = 0;
Integer Lin = Integer.valueOf(lin);
b.add(Lin);
}else {
int yi = 1;
Integer Yi = Integer.valueOf(yi);
b.add(Yi);
}
}
for (int i = 0; i < b.size(); i++){
result = result + ((int)Math.pow(2,(double)i) * Integer.valueOf(b.get(i)));//pow 中用到的(a,b) 都必须是double 类型的数据。Math.pow所有的数据类型都必须是double类型。所以需要用(double)i来先从int转换成double
}
return result;
}
}