目录
- 题目描述:
- 示例 1:
- 示例 2:
- 解法:
题目描述:
给定两个二进制字符串,返回他们的和(用二进制表示)。
输入为非空字符串且只包含数字 1
和 0
。
示例 1:
输入: a = "11", b = "1"
输出: "100"
示例 2:
输入: a = "1010", b = "1011"
输出: "10101"
解法:
class Solution {
public:
string addBinary(string a, string b) {
string res = "";
if(a.empty()){
res = b;
}else if(b.empty()){
res = a;
}else{
int sz1 = a.size();
int sz2 = b.size();
int i = sz1 - 1;
int j = sz2 - 1;
int carry = 0;
while(i >= 0 && j >= 0){
int digit = int(a[i] - ‘0‘) + int(b[j] - ‘0‘) + carry;
if(digit >= 2){
carry = 1;
digit -= 2;
}else{
carry = 0;
}
res += char(digit + ‘0‘);
i --;
j --;
}
while(i >= 0){
int digit = int(a[i] - ‘0‘) + carry;
if(digit >= 2){
carry = 1;
digit -= 2;
}else{
carry = 0;
}
res += char(digit + ‘0‘);
i --;
}
while(j >= 0){
int digit = int(b[j] - ‘0‘) + carry;
if(digit >= 2){
carry = 1;
digit -= 2;
}else{
carry = 0;
}
res += char(digit + ‘0‘);
j --;
}
if(carry != 0){
res += char(carry + ‘0‘);
}
res = string(res.rbegin(), res.rend());
}
return res;
}
};
原文地址:https://www.cnblogs.com/zhanzq/p/10556100.html
时间: 2024-10-16 08:53:02