题目
算法
用两个指针分别指向a,b的末尾
每次取出一个字符,转化为数字,无法取出按0处理,
定义进位carry,初始化为0
三者相加,对2取余即是当前位的数字;对2取商,即是当前进位的值
最后判断carry,为1的话,要在结果最前面加1
代码
class Solution{
public:
string addBinary(string a,string b){
string res="";
int m=a.size()-1,n=b.size()-1,carry=0;
while(m>=0 || n>=0){
int p=m>=0 ? a[m--]-'0':0;
int q=n>=0 ? b[n--]-'0':0;
int sum=p+q+carry;
res=to_string(sum%2)+res;
carry=sum/2;
}
return carry==1?"1"+res:res;
}
};