class Transform {
public:
int calcCost(int A, int B) {
// write code here
//需要改变的位的个数:即A和B不同值的位数(一个为0一个为1),都为0或1的话就不需要改变. 无论是A变B还是B变A.
//所以用A^B可以得到全部有1的位就是需要改变的位。
int needchange = A ^ B;
int count = 0;
while(needchange){//needchange为0时停止;
needchange &= needchange - 1;//将为1的最低位变为0,并计算个数+1,这样消了多少个1就说明需要改变多少个位。
count++;
}
return count;
}
};

京公网安备 11010502036488号