学号:15337003
姓名:段晓巍
问题:
Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
#include<iostream>
#include<string>
class Solution {
public:
string addBinary(string a, string b) {
string sum = "";
int i = a.length() - 1; //表示a的末位
int j = b.length() - 1; //表示b的末位
int c = 0; //表示进位
while (i >= 0 || j >= 0 || c > 0) {
int v = c;
if (i >= 0) {
v = v+ a[i] - '0';
}
if (j >= 0) {
v = v+ b[j] - '0';
} //表示计算a和b两个二进制数加起来的和
c = v / 2; //如果前面v的和是2或者3(不可能再大)的话,则进位变量c从0变为v/2=1
//如果前面v的和是0或者1的话,则进位变量为还为0,不用进位。
sum = string(1, ( '0' + (v&1) ) ) + sum;//将前面计算的结果转化为二进制从末位开始写入sum中,最后如果
//进位变量c为1的话,比原来再多加一位。最后输出结果:sum
i--;
j--;
}
return sum;
}
};