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: 5Output: 2Explanation: 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: 1Output: 0Explanation: The binary representation of 1 is 1 (no leading zero bits), and its complement is 0. So you need to output 0.Subscribe to see which companies asked this question.
Solution 1:
public class Solution { public int findComplement(int num) { String data=Integer.toBinaryString(num); int re=0; int count=1; for(int i=data.length()-1;i>=0;--i){ if(data.charAt(i)=='0') re+=count; count*=2; } return re; }}Solution 2:public class Solution { public int findComplement(int num) { int re=0; int count=1; while(num!=0){ int n=num%2; num/=2; if(n==0) re+=count; count*=2; } return re; }}Disscuss Solution:public class Solution { public int findComplement(int num) { int mask=(Integer.highestOneBit(num)<<1)-1; num=~num; return num&mask; }}
新闻热点
疑难解答