您的位置:首页 > 职场人生

[LeetCode] Add Binary

2013-01-27 20:39 309 查看
class Solution {
public:
string addBinary(string a, string b) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int m = a.size();
int n = b.size();

vector<int> va(m);
vector<int> vb(n);
vector<int> vc(max(m, n) + 1);

for (int i = 0; i < m; i++)
va[i] = a[m - 1 - i] - '0';

for (int j = 0; j < n; j++)
vb[j] = b[n - 1 - j] - '0';

int carry = 0;
for (int i = 0; i < min(m, n); i++) {
int sum = va[i] + vb[i] + carry;
vc[i] = sum % 2;
carry = sum / 2;
}

if (m > n) {
for (int i = n; i < m; i++) {
int sum = va[i] + carry;
vc[i] = sum % 2;
carry = sum / 2;
}
} else {
for (int i = m; i < n; i++) {
int sum = vb[i] + carry;
vc[i] = sum % 2;
carry = sum / 2;
}
}

int s = max(m, n);

if (carry) {
vc[s] = carry;
s += carry;
}

string ret = "";

for (int i = 0; i < s; i++) {
ret += vc[s - 1 - i] + '0';
}

return ret;
}
};


Small Case: 8ms

Large Case: 16ms

Time: O(n)

Space: O(n)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息