如果要将整数A转换为B,需要改变多少个bit位?
注意事项
Both n and m are 32-bit integers.
样例
如把31转换为14,需要改变2个bit位。
(31)10=(11111)2
(14)10=(01110)2
class Solution {
/**
*@param a, b: Two integer
*return: An integer
*/
public static int bitSwapRequired(int a, int b) {
// write your code here
String str_a=Integer.toBinaryString(a);
String str_b=Integer.toBinaryString(b);
if(str_a.length()==str_b.length()){
int count=0;
for(int i=0;i<str_a.length();i++){
if(str_a.charAt(i)!=str_b.charAt(i))
count++;
}
return count;
}else if(str_a.length()>str_b.length()){
int num=str_a.length()-str_b.length();
for(int i=0;i<num;i++){
str_b="0"+str_b;
}
int count=0;
for(int i=0;i<str_a.length();i++){
if(str_a.charAt(i)!=str_b.charAt(i))
count++;
}
return count;
}else{
int num=str_b.length()-str_a.length();
for(int i=0;i<num;i++){
str_a="0"+str_a;
}
int count=0;
for(int i=0;i<str_a.length();i++){
if(str_a.charAt(i)!=str_b.charAt(i))
count++;
}
return count;
}
}
};