标签:har pre turn 进制 表示 leetcode 二进制 bin empty
给定两个二进制字符串,返回他们的和(用二进制表示)。
输入为非空字符串且只包含数字 1
和 0
。
输入: a = "11", b = "1"
输出: "100"
输入: 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;
}
};
leetcode 67. 二进制求和(Add Binary)
标签:har pre turn 进制 表示 leetcode 二进制 bin empty
原文地址:https://www.cnblogs.com/zhanzq/p/10556100.html