Total Accepted: 55613
Total Submissions: 225733
Difficulty: Easy
Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
Show Similar Problems
和做十进制加法一样,要考虑进位。
// test67AddBinary.cpp : 定义控制台应用程序的入口点。
///*
情况说明,主要是处理a,b一样长,以及不等长的情况。
等长情况下,是否有进位。
不等长情况下,是否有进位
*/
#include "stdafx.h"
#include "string"
using std::string;
string addBinary(string a, string b);
int _tmain(int argc, _TCHAR* argv[])
{
string s = addBinary("100", "101");
return 0;
}
string addBinary(string a, string b)
{
int signal = 0;
string result = "";
int anum = 0, bnum = 0;
int alength = a.size();
int blength = b.size();
char temp;
while (alength > 0 && blength > 0)
{
alength--;
blength--;
anum = a[alength]-48;
bnum = b[blength]-48;
temp = (anum + bnum + signal) % 2+48;
signal = (anum + bnum + signal) / 2;
result = temp + result;
}
if (alength > 0)
{
while (alength>0)
{
alength--;
anum = a[alength] - 48;
temp = (anum + signal) % 2 + 48;
signal = (anum + signal) / 2;
result = temp + result;
}
if (signal > 0)
{
temp = signal + 48;
result = temp + result;
signal = 0;
}
}
if (blength > 0)
{
while (blength>0)
{
blength--;
bnum = b[blength] - 48;
temp = (bnum + signal) % 2 + 48;
signal = (bnum + signal) / 2;
result = temp + result;
}
if (signal > 0)
{
temp = signal + 48;
result = temp + result;
signal = 0;
}
}
if (signal > 0)
{
temp = signal + 48;
result = temp + result;
}
return result;
}