leetcode 67Add Binary

来源:互联网 发布:湖北大学知行学院校花 编辑:程序博客网 时间:2024/05/06 03:28

Add Binary

My Submissions
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 Tags
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;

}
0 0
原创粉丝点击