【LeetCode 67】二进制求和

题目描述

给你两个二进制字符串,返回它们的和(用二进制表示)。

输入为 非空 字符串且只包含数字 1 和 0。

示例 1:

输入: a = “11”, b = “1”输出: “100”

示例 2:

输入: a = “1010”, b = “1011”输出: “10101”

提示:

每个字符串仅由字符 ‘0’ 或 ‘1’ 组成。1 <= a.length, b.length <= 104字符串如果不是 “0” ,就都不含前导零。实现思路

这个使用最直接的方法来解决,直接对应位进行相加操作,需要对进位数进行判断,然后给出不同的操作。最后需要注意,如果还有进位,就在结果的前面加个1。

代码实现/** * @param {string} a * @param {string} b * @return {string} */var addBinary = function(a, b) { // 首先将两个树的位数补齐 while(a.length > b.length) b = “0” + b while(a.length < b.length) a = “0” + a let res = new Array(a.length) let sum = 0 let temp = 0 // 进位 for(let i = a.length – 1; i >= 0; i –){ sum = Number(a[i]) + Number(b[i]) + temp if(sum >= 2){ res[i] = sum – 2 temp = 1 }else{ res[i] = sum temp = 0 } } if(temp) res.unshift(1) return res.join(“”)};提交结果

只做第一个我,不做第二个谁。

【LeetCode 67】二进制求和

相关文章:

你感兴趣的文章:

标签云: