您的位置:首页 > 编程语言

leetcode:67 Add Binary-每日编程第四十三题

2015-12-29 11:22 330 查看
Add Binary

Total
Accepted: 67578 Total
Submissions: 261262 Difficulty: Easy

Given two binary strings, return their sum (also a binary string).

For example,

a = 
"11"


b = 
"1"


Return 
"100"
.

class Solution {
public:
void addBinary(string& str,string& a,string& b,int len1,int len2,bool carryBit)
{
if(len1==-1&&len2==-1){
if(carryBit){
str+='1';
return;
}else{
return ;
}
}

if(len1==-1){
if(!carryBit){
char ch=b[len2];
addBinary(str,a,b,len1,len2-1,false);
str+=ch;
}else{
if(b[len2]=='1'){
char ch='0';
addBinary(str,a,b,len1,len2-1,true);
str+=ch;
}else{
char ch='1';
addBinary(str,a,b,len1,len2-1,false);
str+=ch;
}
}
}else if(len2==-1){
if(!carryBit){
char ch=a[len1];
addBinary(str,a,b,len1-1,len2,false);
str+=ch;
}else{
if(a[len1]=='1'){
char ch='0';
addBinary(str,a,b,len1-1,len2,true);
str+=ch;
}else{
char ch='1';
addBinary(str,a,b,len1-1,len2,false);
str+=ch;
}
}
}else{
char ch=a[len1]+b[len2]-'0';
if(ch=='2'){
if(carryBit){
ch='1';
}else{
ch='0';
}
addBinary(str,a,b,len1-1,len2-1,true);
str+=ch;
}else if(ch=='1'){
if(carryBit){
ch='0';
addBinary(str,a,b,len1-1,len2-1,true);
str+=ch;
}else{
addBinary(str,a,b,len1-1,len2-1,false);
str+=ch;
}
}else{
if(carryBit){
ch='1';
}
addBinary(str,a,b,len1-1,len2-1,false);
str+=ch;
}
}
}
string addBinary(string a, string b) {
int len1=a.length()-1;
int len2=b.length()-1;
if(a==""){
return b;
}else if(b==""){
return a;
}
string str;
addBinary(str,a,b,len1,len2,false);
return str;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: