67. Add binary

https://leetcode.com/problems/add-binary/tabs/description

比较简单与无聊的一道题,但是自己并没有顺利地做出来。
总没有想到一个优雅的方式去解决问题。

抄了个答案:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Solution {
public:
string addBinary(string a, string b) {
string s = "";
int c = 0, i = a.size() - 1, j = b.size() - 1;
while(i >= 0 || j >= 0 || c == 1)
{
c += i >= 0 ? a[i--] - '0' : 0;
c += j >= 0 ? b[j--] - '0' : 0;
s = char(c % 2 + '0') + s;
c /= 2;
}
return s;
}
};

这个答案还是有一些要学习的地方。

  1. 用string表示数时的一些操作,如-'0'这样的操作
  2. c % 2等这种用结果代替条件判断的
  3. 两个c+=...用来搞进位的