题解 | #牛群的编码# 模拟加法
牛群的编码
https://www.nowcoder.com/practice/fd18eec140244f31ac817757a54b4a39
知识点
模拟
思路
模拟加法的进位过程,翻转两个字符串,从前往后进行加法,同时维护一个进位carry。每一次把当前位记录到结果字符串中。
最后反转结果字符串即可。
时间复杂度
AC Code (c++)
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param a string字符串
* @param b string字符串
* @return string字符串
*/
string addBinary(string a, string b) {
reverse(a.begin(), a.end());
reverse(b.begin(), b.end());
string res;
int i = 0, n = a.size(), m = b.size();
int carry = 0;
while (i < n and i < m) {
auto k = (a[i] - '0' + b[i] - '0' + carry);
res.push_back('0' + (k & 1));
carry = k >> 1;
i ++;
}
while (i < n) {
auto k = (a[i] - '0' + carry);
res.push_back('0' + (k & 1));
carry = k >> 1;
i ++;
}
while (i < m) {
auto k = (b[i] - '0' + carry);
res.push_back('0' + (k & 1));
carry = k >> 1;
i ++;
}
while (carry) {
res.push_back('0' + (carry & 1));
carry >>= 1;
}
reverse(res.begin(), res.end());
return res;
}
};
360集团公司氛围 345人发布
查看2道真题和解析