LeetCode67. Add Binary

来源:互联网 发布:游戏淘宝网商城 编辑:程序博客网 时间:2024/06/06 00:59

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

For example,
a = “11”
b = “1”
Return “100”.

#include<string>#include<cstdlib>#include<iostream>using namespace std;class Solution {public:    string addBinary(string a, string b) {        int n1=a.length(),n2=b.length();        if(n1==0) return b;        if(n2==0) return a;        string res=a;        char flag='0';        int res_len=n1;        if(n1<n2){           res=b;           res_len=n2;        }        int i=n1-1,j=n2-1,k=res_len-1;        while((i>-1)&&(j>-1)){            if((a[i]=='1')&&(b[j]=='1')&&(flag=='0')){                flag='1';                res[k]='0';            }            else if((a[i]=='1')&&(b[j]=='1')&&(flag=='1')){                flag='1';                res[k]='1';                 }            else if(((a[i]=='1')||(b[j]=='1'))&&(flag=='0')){                flag='0';                res[k]='1';            }            else if(((a[i]=='1')||(b[j]=='1'))&&(flag=='1')){                flag='1';                res[k]='0';            }            else{                res[k]=flag;                    flag='0';               }            --i;            --j;            --k;        }        while(k>-1){            if(flag=='0'){return res;}            else{                if(res[k]=='1'){                    res[k]='0';                    flag='1';                }                else if(res[k]=='0'){                    res[k]='1';                    flag='0';                }                       }               --k;        }        if(flag=='1'){            res=flag+res;        }        return res;    }};void main(){    string a="101111",b="10";    Solution So;    string res=So.addBinary(a,b);    printf("%s \n",res.c_str());}

这里写图片描述

0 0
原创粉丝点击