Appearance
67. 二进制求和
原题链接:LeetCode 67. 二进制求和
题目描述
给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。
示例 1:
**输入:**a = "11", b = "1"
- 输出: "100"
示例 2:
- 输入: a = "1010", b = "1011"
- 输出: "10101"
提示:
1 <= a.length, b.length <= 104
a和b仅由字符'0'或'1'组成字符串如果不是
"0",就不含前导零
难度: Easy
题解代码
javascript
/**
* @param {string} a
* @param {string} b
* @return {string}
*/
var addBinary = function(a, b) {
// 没有超过安全数的情况下可以这样用
// return (parseInt(a, 2) + parseInt(b, 2)).toString(2)
var res = [];
var n1 = a.length;
var n2 = b.length;
var a = a.split('');
var b = b.split('');
var carry = 0;
if (n1 < n2) {
for (var i = 0; i < n2 - n1; ++i) {
a.unshift(0);
}
}
if (n1 > n2) {
for (var i = 0; i < n1 - n2; ++i) {
b.unshift(0);
}
}
for (var i = Math.max(n1, n2) - 1; i >= 0; i--) {
var sum = Number(a[i]) + Number(b[i]) + carry;
res.unshift(sum % 2);
carry = Math.floor(sum / 2);
}
if (carry) {
res.unshift(1);
}
return res.join('')
};