解题思路:css
1. 首先在两个字符串前面补‘0’,使它们等长。不然要一直监督操做是否超出两个字符串的索引。spa
2. 从后向前遍历全部位数,同位相加。字符相加,利用ASCII码,字符在内部都用数字表示,咱们不须要知道具体数值,但可知 ‘0’ - ‘0’ = 0, ‘0’ + 1 = ‘1’,以此类推。字符的加减、比较大小,实际上都是内部数字的加减、比较大小。code
3. 判断位数相加的结果,若大于等于字符‘2’,则须要向前一位进1.blog
class Solution { public: string addBinary(string a, string b) { int al = a.size(); int bl = b.size(); int cl = al >= bl? al : bl; cl++; for(int i = 0; i < cl-al; i++) a = '0' + a; for(int j = 0; j < cl-bl; j++) b = '0' + b; for(int k = cl - 1; k > 0; k--){ a[k] = a[k] - '0' + b[k]; if(a[k] >= '2'){ a[k-1] = a[k-1] + 1; a[k] = (a[k] - '0') % 2 + '0'; } } if (a[0] == '0') a = a.substr(1, cl-1); return a; } };
上述解法,时间复杂度O(n)。索引