Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
解题思路:
从两个子字符尾部遍历字符;
每次得到新的字符插入结果字符串的头部;
解题步骤:
1、建立返回string、从后向前遍历的idx:idx_a / idx_b、进位量
2、循环开始,当idx_a或者idx_b任意不为0时,循环继续:
(1)临时整形sum = 进位值;
(2)如果idx_a不为0,则加上a[idx_a - 1],idx_a--;同理对idx_b;
(3)更新进位值和sum,并将sum以字符的形式插入返回string的头部;
3、如果循环结束时进位值不为0,则在返回string头部添加一位。
代码:
1 class Solution { 2 public: 3 string addBinary(string a, string b) { 4 int len_a = a.size(); 5 int len_b = b.size(); 6 int sig_flag = 0; 7 string ret; 8 9 while (len_a || len_b) { 10 int curd = sig_flag; 11 if (len_a) { 12 curd += a[len_a - 1] - '0'; 13 len_a--; 14 } 15 16 if (len_b) { 17 curd += b[len_b - 1] - '0'; 18 len_b--; 19 } 20 21 sig_flag = curd / 2; 22 curd = curd % 2; 23 ret.insert(0, 1, '0' + curd); 24 } 25 26 if (sig_flag) 27 ret.insert(0, 1, '1'); 28 29 return ret; 30 } 31 };
附录:
string操作
int char string