[Leetcode] add binary 二进制加法

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

For example,
a ="11"
b ="1"
Return"100".

题意:将两个以字符串形式保存的二进制数进行相加。

思路:其实不管是以数组、字符串形式,加或者乘(multiply strings),一般的思路都是从后往前计算,用一个中间变量保存相加或者相乘的结果(加法是一个变量int 或string就行,乘就要用到向量了)。本题而言,要注意的是,若是相加时其中长度较小的字符串变量完时,怎么办?这时,其实可以用中间变量在字符串各自存在的前提下加上对应值就行。还有一个就是:字符和数字之间的相互转换,可以通过加减'0'来实现。最后一个问题是:最高位存在进位的情况,其实可以最后根据中间变量的值来进行处理。代码如下:

 1 class Solution {
 2 public:
 3     string addBinary(string a, string b) 
 4     {
 5         string res="";
 6         int aLen=a.size()-1;
 7         int bLen=b.size()-1;
 8         int carry=0;
 9         while(aLen>=0||bLen>=0)
10         {
11             if(aLen>=0)
12                 carry+=a[aLen--]-'0';
13             if(bLen>=0)
14                 carry+=b[bLen--]-'0';
15             
16             res=char(carry%2+'0')+res;  //必须存在char不然,就会报错。恩,不懂。也可以是to_string(carry%2)+res;
17             carry/=2;
18         }    
19         if(carry==1)
20         {
21             res='1'+res;
22         }
23 
24         return res;
25     }
26 };
原文地址:https://www.cnblogs.com/love-yh/p/7086459.html