1、描述
- 二进制求和
给你两个二进制字符串,返回它们的和(用二进制表示)。
输入为 非空 字符串且只包含数字 1 和 0。
示例 1:
输入: a = “11”, b = “1”
输出: “100”
示例 2:
输入: a = “1010”, b = “1011”
输出: “10101”
2、关键字
二进制加法,
3、思路
大数相加的思路,
4、notes
去看:
大数相加练习题
5、复杂度
时间:O(N)
空间:O(1)
6、code
class Solution {
public:
string addBinary(string a, string b) {
int n = a.size() - 1;
int m = b.size() - 1;
int power = 0;
string res = "";
while(n>=0 || m >= 0|| power>0){
int x = n >=0 ? a[n] - '0' : 0;
int y = m >=0 ? b[m] - '0' : 0;
int tem = x + y + power;
power = tem /2;
tem %=2;
res += tem + '0';
n--;
m--;
}
reverse(res.begin(),res.end());
return res;
}
};