leetcode 67. Add Binary

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

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

Subscribe to see which companies asked this question

 
刚开始的想法以为要转换成int,然后计算,最后觉得太麻烦了。
就直接进行字符类型的加和了,每次都加上进位,但是进位什么时候为1什么时候为0需要设置。char tmp= a[i]+b[j]+r
 
要注意几点,一个就是两个字符长度不等,要对剩下的字符进行处理,假如还有进位的话,还需要进行加和。
再一个就是假如所有的字符都处理完了,如果这个时候还有进位,就需要再加一位。
 
class Solution {
public:
    string addBinary(string a, string b) {
        string ret="";
        int tmp1;
        char tmp;
        char r='0';
        int i=a.length();
        int j=b.length();
        int c=min(i,j);
        while(c>0){
            i--;j--;
            tmp1=a[i]+b[j]+r-'0'-'0'-'0';
            if(tmp1<2) r='0';
            else r='1';
            if(tmp1%2==0) tmp='0';
            else tmp='1';
            ret=tmp+ret;
            c--;
        }
        while(i>0){
            i--;
            tmp1=a[i]+r-'0'-'0';
            if(tmp1<2) r='0';
            else r='1';
            if(tmp1%2==0) tmp='0';
            else tmp='1';
            ret=tmp+ret;
        }
        while(j>0){
            j--;
               tmp1=b[j]+r-'0'-'0';
            if(tmp1<2) r='0';
            else r='1';
            if(tmp1%2==0) tmp='0';
            else tmp='1';
            ret=tmp+ret;
            
        }
        if(r=='1') ret=r+ret;
        return ret;
        
    }
};
原文地址:https://www.cnblogs.com/LUO77/p/5067223.html