当前位置 : 主页 > 编程语言 > java >

【LeetCode 67】二进制求和

来源:互联网 收集:自由互联 发布时间:2022-07-13
题目描述 给你两个二进制字符串,返回它们的和(用二进制表示)。 输入为 非空 字符串且只包含数字 1 和 0。 示例 1: 输入 : a = "11" , b = "1" 输出 : "100" 示例 2: 输入 : a = "1010" , b = "10


题目描述

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

输入为 非空 字符串且只包含数字 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】二进制求和_leetcode


上一篇:2021-01-03 | 53. 最大子序和
下一篇:没有了
网友评论