83-Add Binary

来源:互联网 发布:邮箱数据出售 编辑:程序博客网 时间:2024/06/18 15:31

-67. Add Binary My Submissions QuestionEditorial Solution
Total Accepted: 85904 Total Submissions: 309911 Difficulty: Easy
Given two binary strings, return their sum (also a binary string).

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

题意:二进制加法

class Solution {public:    string addBinary(string a, string b) {        reverse(a.begin(),a.end()); //逆转        reverse(b.begin(),b.end());        int na = a.size(),nb = b.size();        int n = max(na,nb)+1,min_len=min(na,nb);        string res(n,'0');        for(int i=0;i<min_len;++i){             int tmp1 = a[i]+b[i]-'0'-'0';//a,b指定位相加和            int tmp2=res[i]-'0'+tmp1%2;  //加之后加上本身位的值            res[i]=(tmp2)%2+'0';  //取余            int tmp=tmp1/2+tmp2/2; //计算下一位的总的进位和            res[i+1]=tmp%2+'0';   //下一位实际值            res[i+2]=tmp/2+'0';   //下一位是否产生金进位        }        if(na<nb)a=b;        for(int j=min_len;j<n-1;++j){ //较长者继续相加            int sum=res[j]-'0'+a[j]-'0';            res[j]=sum%2+'0';            res[j+1]=sum/2+'0';        }        if(res[n-1]=='0')res = res.substr(0,n-1);        reverse(res.begin(),res.end()); //为显示正常需要逆转        return res;    }};
0 0
原创粉丝点击