题目:
Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
代码1:
class Solution { public: string addBinary(string a, string b) { char carry=‘0‘; string c; if(a.empty())return b; if(b.empty())return a; string::iterator itr_a=a.end()-1; string::iterator itr_b=b.end()-1; while(itr_a>=a.begin()&&itr_b>=b.begin()){ if(*itr_a==‘0‘&&*itr_b==‘0‘){ if(carry==‘0‘){ c.insert(c.begin(),‘0‘); }else if(carry==‘1‘){ c.insert(c.begin(),‘1‘); carry=‘0‘; } itr_a--;itr_b--; continue; } if(*itr_a==‘0‘&&*itr_b==‘1‘){ if(carry==‘0‘){ c.insert(c.begin(),‘1‘); }else if(carry==‘1‘){ c.insert(c.begin(),‘0‘); carry=‘1‘; } itr_a--;itr_b--; continue; } if(*itr_a==‘1‘&&*itr_b==‘0‘){ if(carry==‘0‘){ c.insert(c.begin(),‘1‘); }else if(carry==‘1‘){ c.insert(c.begin(),‘0‘); carry=‘1‘; } itr_a--;itr_b--; continue; } if(*itr_a==‘1‘&&*itr_b==‘1‘){ if(carry==‘0‘){ c.insert(c.begin(),‘0‘); carry=‘1‘; }else if(carry==‘1‘){ c.insert(c.begin(),‘1‘); carry=‘1‘; } itr_a--;itr_b--; continue; } } while(itr_a>=a.begin()){ if(carry==‘0‘){ c.insert(c.begin(),a.begin(),itr_a+1); break; } if(*itr_a==‘0‘&&carry==‘1‘){ c.insert(c.begin(),‘1‘); carry=‘0‘; itr_a--; continue; } if(*itr_a==‘1‘&&carry==‘1‘){ c.insert(c.begin(),‘0‘); carry=‘1‘; itr_a--; continue; } } while(itr_b>=b.begin()){ if(carry==‘0‘){ c.insert(c.begin(),b.begin(),itr_b+1); break; } if(*itr_b==‘0‘&&carry==‘1‘){ c.insert(c.begin(),‘1‘); carry=‘0‘; itr_b--; continue; } if(*itr_b==‘1‘&&carry==‘1‘){ c.insert(c.begin(),‘0‘); carry=‘1‘; itr_b--; continue; } } if(carry==‘1‘){ c.insert(c.begin(),‘1‘); } return c; } };
代码2:
class Solution { public: string addBinary(string a, string b) { int carry=0; string c; if(a.empty())return b; if(b.empty())return a; const size_t n=max(a.size(),b.size()); for(int i=0;i<n;i++){ int val_a=i<a.size()?a[a.size()-1-i]-‘0‘:0; int val_b=i<b.size()?b[b.size()-1-i]-‘0‘:0; int val_c=(val_a+val_b+carry)%2; carry=(val_a+val_b+carry)/2; c.insert(c.begin(),val_c+‘0‘); } if(carry==1){ c.insert(c.begin(),‘1‘); } return c; } };
【Leetcode】Add Binary,布布扣,bubuko.com
原文:http://blog.csdn.net/ussam/article/details/21963717