本文主要是介绍Leecode: 面试题 05.06. 整数转换,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
面试题 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;}
};
这篇关于Leecode: 面试题 05.06. 整数转换的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!