function addBinary(a: string, b: string): string {
// 解法会溢出
// const la = parseInt(a, 2)
// const lb = parseInt(b, 2)
// const total = (la + lb).toString(2)
// return total
let l1: string = a.length >= b.length ? a : b
let l2: string = a.length >= b.length ? b : a
let l3: string = ''
for (let i: number = 0; i < l1.length; i++) {
if (l2[i] === void 0) {
l2 = '0' + l2
}
// l3 = '0' + l3
}
let carry: number = 0 // 进位
for (let i = l1.length - 1; i >= 0; i--) {
let cur = +l1[i] + +l2[i] + carry
if (cur > 1) {
cur -= 2
carry = 1
} else {
carry = 0
}
l3 = cur + l3
}
if (carry) {
l3 = '1' + l3
}
return l3
};
// 示例 1:
// 输入: a = "11", b = "1"
// 输出: "100"
// 示例 2:
// 输入: a = "1010", b = "1011"
// 输出: "10101"
leetCode - 二进制求和
最新推荐文章于 2024-08-15 05:02:54 发布