EX:
a = "11", b = "1"Ans: 100
想法:
這題基本上就是直接題意做,用一般小學學的加法方式去加,只不過10進位換成2進位,注意進位問題!
完整程式碼:
class Solution {
public:
string addBinary(string a, string b) {
int a_len = a.size() - 1;
int b_len = b.size() - 1;
string res;
int carry = 0;
int sum = 0;
while (a_len >= 0 && b_len >= 0) {
sum = (a[a_len] - '0') + (b[b_len] - '0') + carry;
res.insert(res.begin(), (sum % 2) + '0');
carry = sum / 2;
a_len--;
b_len--;
}
while (a_len >= 0) {
sum = (a[a_len] - '0') + carry;
res.insert(res.begin(), (sum % 2) + '0');
carry = sum / 2;
a_len--;
}
while (b_len >= 0) {
sum = (b[b_len] - '0') + carry;
res.insert(res.begin(), (sum % 2) + '0');
carry = sum / 2;
b_len--;
}
if (carry > 0) {
res.insert(res.begin(), carry + '0');
}
return res;
}
};
沒有留言:
張貼留言