面试题 05.06. 整数转换
整数转换。编写一个函数,确定需要改变几个位才能将整数A转成整数B。
示例1:
输入:A = 29 (或者0b11101), B = 15(或者0b01111)
输出:2
示例2:
输入:A = 1,B = 2
输出:2
提示:
A,B范围在[-2147483648, 2147483647]之间
利用异或,将不同的二进制变为1,然后求出1的个数即可,利用n&(n-1)将最右边的1变为0,cnt++;
return cnt就ok了
class Solution {
public:
int convertInteger(int A, int B) {
unsigned int b=A^B;
unsigned int cnt=0;
while(b){
cnt++;
b=(b&(b-1));
}
return cnt;
}
};
本文详细解析了一种用于确定将整数A转换为整数B所需改变的位数的算法。通过异或运算找出不同位,再运用位操作技巧计数,实现高效计算。适用于面试准备和技术交流。
197

被折叠的 条评论
为什么被折叠?



