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; } };