0
点赞
收藏
分享

微信扫一扫

Add Binary - LeetCode


题目:

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

For example,

a = ​​"11"​

b = ​​"1"​

Return ​​"100"​​.

思路:

这道题目,主要思想就是从两个字符串尾部,逐位相加,并设置标志位,对一些特殊条件一定要注意,本身算法并不难,主要是if-else逻辑判断比较多

代码:

class Solution {
public:
string addBinary(string a, string b) {
int temp,len_a,len_b;
len_a = a.size();
len_b = b.size();

string::iterator itr_a = a.end() - 1;
string::iterator itr_b = b.end() - 1;
string str_a =a;
string str_b =b;
if(len_a<len_b)
{
a =str_b;
b =str_a;
itr_a = a.end() - 1;
itr_b = b.end() - 1;
}
int c =0;
while(itr_b!=b.begin()-1)
{
if(c == 0)
{
if(*itr_a ==*itr_b&&*itr_a == '1')
{

c=1;
*itr_a = '0';
itr_a --;
itr_b --;
}
else if(*itr_a == *itr_b&&*itr_a =='0')
{
itr_a --;
itr_b --;
c = 0;
}
else
{
*itr_a = '1';
c = 0;
itr_a --;
itr_b --;
}
}
else
{
if(*itr_a==*itr_b&&*itr_a=='0')
{
*itr_a ='1';
c = 0;
itr_a --;
itr_b --;
}
else if(*itr_a !=*itr_b)
{
c =1;
*itr_a = '0';
itr_a --;
itr_b --;
}
else
{
c =1;
*itr_a ='1';
itr_a --;
itr_b --;
}
}

}

if(c==1)
{
while(itr_a!=a.begin()-1)
{
cout<<a<<endl;
if(c==1)
{
if(*itr_a=='0')
{
c =0;
*itr_a = '1';
itr_a --;
return a;
}
else if(*itr_a =='1')
{
c =1;
*itr_a = '0';
itr_a --;
}

}
}
if(c==1)
{
a.insert(0,"1");
return a;
}
}
return a;
}
};




举报

相关推荐

0 条评论