leetcode67题做的时候遇到的,答案的代码如下
class Solution {
public:
string addBinary(string a, string b) {
string res = "";
int m = a.size() - 1, n = b.size() - 1, carry = 0;
while (m >= 0 || n >= 0) {
int p = m >= 0 ? a[m--] - '0' : 0;
int q = n >= 0 ? b[n--] - '0' : 0;
int sum = p + q + carry;
res = to_string(sum % 2) + res;
carry = sum / 2;
}
return carry == 1 ? "1" + res : res;
}
};
关键就是这句话:
int p = m >= 0 ? a[m--] - '0' : 0;
这里- '0'是为了什么呢?我把- '0'写成了- "0"为什么就是错的呢?