string Solution::addBinary(string A, string B) {
string ans="";
string carry=“0”;
int n=A.length();
int m=B.length();
if(n>m){
for(int i=0;i<m;i++){
if(carry==“0”){
if(A[n-1-i]==‘0’&&B[m-1-i]==‘0’){
ans.append(“0”);
carry=“0”;
}
else if((A[n-1-i]==‘0’&&B[m-1-i]==‘1’)||(A[n-1-i]==‘1’&&B[m-1-i]==‘0’)){
ans.append(“1”);
carry=“0”;
}
else if(A[n-1-i]==‘1’&&B[m-1-i]==‘1’){
ans.append(“0”);
carry=“1”;
}
}
else if(carry==“1”){
if(A[n-1-i]==‘0’&&B[m-1-i]==‘0’){
ans.append(“1”);
carry=“0”;
}
else if((A[n-1-i]==‘0’&&B[m-1-i]==‘1’)||(A[n-1-i]==‘1’&&B[m-1-i]==‘0’)){
ans.append(“0”);
carry=“1”;
}
else if(A[n-1-i]==‘1’&&B[m-1-i]==‘1’){
ans.append(“1”);
carry=“1”;
}
}
}
for(int i=m;i<n;i++){
if(carry=="0"){
if(A[n-1-i]=='0'){
ans.append("0");
carry="0";
}
else if(A[n-1-i]=='1'){
ans.append("1");
carry="0";
}
}
else if(carry=="1"){
if(A[n-1-i]=='0'){
ans.append("1");
carry="0";
}
else if(A[n-1-i]=='1'){
ans.append("0");
carry="1";
}
}
}
if(carry=="1"){
ans.append("1");
}
}
else if(n<m){
for(int i=0;i<n;i++){
if(carry==“0”){
if(A[n-1-i]==‘0’&&B[m-1-i]==‘0’){
ans.append(“0”);
carry=“0”;
}
else if((A[n-1-i]==‘0’&&B[m-1-i]==‘1’)||(A[n-1-i]==‘1’&&B[m-1-i]==‘0’)){
ans.append(“1”);
carry=“0”;
}
else if(A[n-1-i]==‘1’&&B[m-1-i]==‘1’){
ans.append(“0”);
carry=“1”;
}
}
else if(carry==“1”){
if(A[n-1-i]==‘0’&&B[m-1-i]==‘0’){
ans.append(“1”);
carry=“0”;
}
else if((A[n-1-i]==‘0’&&B[m-1-i]==‘1’)||(A[n-1-i]==‘1’&&B[m-1-i]==‘0’)){
ans.append(“0”);
carry=“1”;
}
else if(A[n-1-i]==‘1’&&B[m-1-i]==‘1’){
ans.append(“1”);
carry=“1”;
}
}
}
for(int i=n;i<m;i++){
if(carry=="0"){
if(B[m-i-1]=='0'){
ans.append("0");
carry="0";
}
else if(B[m-1-i]=='1'){
ans.append("1");
carry="0";
}
}
else if(carry=="1"){
if(B[m-1-i]=='0'){
ans.append("1");
carry="0";
}
else if(B[m-1-i]=='1'){
ans.append("0");
carry="1";
}
}
}
if(carry=="1"){
ans.append("1");
}
}
else{
for(int i=0;i<n;i++){
if(carry==“0”){
if(A[n-1-i]==‘0’&&B[m-1-i]==‘0’){
ans.append(“0”);
carry=“0”;
}
else if((A[n-1-i]==‘0’&&B[m-1-i]==‘1’)||(A[n-1-i]==‘1’&&B[m-1-i]==‘0’)){
ans.append(“1”);
carry=“0”;
}
if(A[n-1-i]==‘1’&&B[m-1-i]==‘1’){
ans.append(“0”);
carry=“1”;
}
}
else if(carry==“1”){
if(A[n-1-i]==‘0’&&B[m-1-i]==‘0’){
ans.append(“1”);
carry=“0”;
}
else if((A[n-1-i]==‘0’&&B[m-1-i]==‘1’)||(A[n-1-i]==‘1’&&B[m-1-i]==‘0’)){
ans.append(“0”);
carry=“1”;
}
else if(A[n-1-i]==‘1’&&B[m-1-i]==‘1’){
ans.append(“1”);
carry=“1”;
}
}
}
if(carry=="1"){
ans.append("1");
}
}
reverse(ans.begin(), ans.end());
return ans;
}