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) { int ia = a.size() - 1, ib = b.size() - 1; char carry = '0'; string &res = (ia > ib)? a : b; int i = (ia > ib)? ia : ib; while(ia >= 0 && ib >= 0) { char tmp = carryBit(a[ia], b[ib], carry); res[i--] = charBitAdd(charBitAdd(a[ia--], b[ib--]), carry); carry = tmp; } while(i >= 0) { char tmp = carryBit(res[i], carry); res[i] = charBitAdd(res[i--], carry); carry = tmp; } if(carry == '0')return res; else return "1"+res; } public: //求和函数 char charBitAdd(char a, char b) { if(a == b)return '0'; else return '1'; } //求进位 char carryBit(char add1, char add2, char carry = '0') { if((add1 == '1' && add2 == '1') || (add1 == '1' && carry == '1') || (add2 == '1' && carry == '1')) return '1'; else return '0'; } };
【版权声明】转载请注明出处:http://www.cnblogs.com/TenosDoIt/p/3475306.html