LeetCode二进制求和 用c++写出
时间: 2024-10-04 08:02:56 浏览: 30
LeetCode上关于二进制求和的问题通常涉及到将两个非负整数用二进制形式相加。在C++中,你可以通过模拟这个过程来解决这类问题。假设我们有两个整数a和b,可以按照从低位到高位的顺序逐位相加,并考虑进位。
下面是一个简单的C++函数示例:
```cpp
#include <bitset>
using namespace std;
class Solution {
public:
int addBinary(string a, string b) {
int len_a = a.size(), len_b = b.size();
if (len_a < len_b) {
swap(a, b);
swap(len_a, len_b);
}
vector<int> carry(len_a + 1, 0); // 初始化进位数组
for (int i = len_a - 1; i >= 0; --i) {
int sum = a[i] - '0' + b[i] - '0' + carry[i+1]; // 当前位相加并考虑进位
carry[i] = sum % 2; // 更新当前位的进位
a[i] = sum / 2 + '0'; // 如果有进位,更新原数
}
// 如果最后还有进位,需要处理
if (carry[0]) a = "1" + a;
return stoi(a); // 最终结果转换回十进制整数
}
};
```
在这个函数中,`addBinary`接受两个字符串类型的输入表示二进制数,然后逐位相加,同时跟踪进位。最后返回的是转换后的十进制整数。
阅读全文