给定两个 01 字符串 a 和 b ,请计算它们的和,并以二进制字符串的形式输出。
输入为 非空 字符串且只包含数字 1 和 0。
示例 1:
输入: a = "11", b = "10"
输出: "101"
示例 2:
输入: a = "1010", b = "1011"
输出: "10101"
提示:
每个字符串仅由字符 '0' 或 '1' 组成。
1 <= a.length, b.length <= 10^4
字符串如果不是 "0" ,就都不含前导零。
思路:
从后往前按位相加并进位,难点在于char转int
class Solution {
public:
string addBinary(string a, string b) {
int l = a.length()>b.length()?a.length():b.length();
int r = 0;
string re;
for(int i = 1;i<=l;i++){
int a_ = a.length()<i?0:a[a.length() - i]-'0';
int b_ = b.length()<i?0:b[b.length() - i]-'0';
int c = a_ + b_ + r;
re.insert(0,to_string(c%2));
r = c>1?1:0;
}
if(r == 1){
re.insert(0,to_string(r));
}
return re;
}
};