Problem: 面试题 05.06. 整数转换
题目描述
思路及解法
1.通过将两个数进行异或操作求出两个数中不同的位(不同的位异或后为二进制1);
2.统计异或后不同的位的个数(即异或后二进制为1的个数)
复杂度
时间复杂度:
O ( 1 ) O(1) O(1)
空间复杂度:
O ( 1 ) O(1) O(1)
Code
class Solution {
public:
/**
* Bit operation
* @param A Given number
* @param B Given number
* @return int
*/
int convertInteger(int A, int B) {
int c = A ^ B;
int diffCount = 0;
int mask = 1;
for (int i = 0; i < 32; ++i) {
if ((c & mask) != 0) {
diffCount++;
}
mask <<= 1;
}
return diffCount;
}
};