Problem: 面试题 05.06. 整数转换
文章目录
- 题目描述
- 思路及解法
- 复杂度
- Code
题目描述
思路及解法
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;}
};