476. 数字的补数 javascript
题目:
给你一个 正 整数 num ,输出它的补数。补数是对该数的二进制表示取反。
示例
输入:num = 5
输出:2
解释:5 的二进制表示为 101(没有前导零位),其补数为 010。所以你需要输出 2 。
输入:num = 1
输出:0
解释:1 的二进制表示为 1(没有前导零位),其补数为 0。所以你需要输出 0 。
代码1 循环
var findComplement = function(num) {
// 先将数字转换成二进制,再求补数,再转换成十进制返回
var arr = num.toString(2).split('')
for(var i=0;i<arr.length;i++){
if(arr[i] ==0)arr[i]=1
else arr[i]=0
}
return parseInt(arr.join(''),2)
};
代码2 换种思路:正则表达式
- 转成 二进制
- 先将全部的 1 转换成 2
- 再将全部的 0 转换成 1
- 最后将全部的 2 转换成 0
- 转成 十进制
- end
5 101
101 --> 202 --> 212 --> 010 --> end
var findComplement = function(num) {
var st = num.toString(2)
st = st.replace(/1/g,2).replace(/0/g,1).replace(/2/g,0)
return parseInt(st,2)
};
学艺不精,还需努力💪
六一快乐happy~