题意:给出两个字符串,表示的是二进制数。求他们的加和。
题解:模拟二进制加法。
class Solution {
public:
string addBinary(string a, string b) {
int n = a.length();
int m = b.length();
if(n < m) swap(a,b),swap(n,m);
int num[2];
num['0'] = 0,num['1'] = 1;
int jin = 0;
for(int i = n - 1, j = m - 1; i >= 0; i--)
{
if(j < 0)
{
int x = num[a[i]] + jin;
if(x >= 2)
{
a[i] = (x % 2) + '0';
jin = 1;
}
else
{
a[i] = x + '0';
jin = 0;
}
}
else
{
int x = num[a[i]] + num[b[j]] + jin;
if(x >= 2)
{
a[i] = (x % 2) + '0';
jin = 1;
}
else
{
a[i] = x + '0';
jin = 0;
}
j--;
}
}
if(jin == 1) return "1" + a;
else return a;
}
};