Given two binary strings, return their sum (also a binary string). For example, a = "11" b = "1" Return "100". 一开始想到的方法是把字符串转为int 然后相加再做处理,后来发现没考虑到超出int 表示范围的问题,思路还是有一定的局限性! class Solution { public: string addBinary(string a, string b) { //int tempInt = atoi(a.c_str()) + atoi(b.c_str()); //得到一个十进制的结果,元素都是由0和1组成 string result(""); int carry = 0;//保存进位 int size = a.size() > b.size() ? a.size() : b.size(); for (int i = 0; i < size; ++i) { int aInt = (i < a.size()) ? a[a.size() - i-1] - '0' : 0; int bInt = (i < b.size()) ? b[b.size() - i-1] - '0' : 0; int temp = aInt + bInt; switch (temp) { case 0: { result.insert(result.begin(),carry+'0'); carry = 0; break; } case 1: { if (carry == 1) { result.insert(result.begin(), '0'); carry = 1; } else { result.insert(result.begin(),'1'); carry = 0; } break; } case 2: { if (carry == 1) { result.insert(result.begin(),'1'); } else { result.insert(result.begin(),'0'); } carry = 1; break; } } } if (carry == 1) result.insert(result.begin(),'1'); return result; } };