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 1:
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.
Example 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.
粗略思路是先求出此数与其补码和,然后减去该数。
public class Solution {
public int findComplement(int num) {
String a=Integer.toBinaryString(num);
long b= (long) Math.pow(2,(a.length()));
return (int) (b-num-1);
}
}
第一次提交的时候报错,原因是 有一个input 是2147483647,输入之后,我的是-1,标准output应该是0.后来发现应该是
int溢出的问题。在方法那里加上了long后,就不再溢出了。
但目前 Solution区域的别人方法还没看懂。