leetcode 67Add Binary

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;

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值