leetcode67 二进制求和 用c++写出可运行代码
时间: 2024-10-04 07:03:05 浏览: 40
c++-c++编程基础之leetcode题解第67题二进制求和.zip
在LeetCode第67题中,题目要求实现一个函数,给定两个非负整数,用二进制表示并返回它们相加的值。这通常需要我们将两个数字转换成二进制字符串,然后逐位相加,并处理进位。以下是用C++编写的一个简单示例:
```cpp
#include <string>
using namespace std;
class Solution {
public:
string addBinary(string a, string b) {
int carry = 0;
string result = "";
// 从右向左遍历,直到其中一个字符串结束
for (int i = a.size() - 1, j = b.size() - 1; i >= 0 || j >= 0; --i, --j) {
int sum = carry + (a[i] == '1' ? 1 : 0) + (b[j] == '1' ? 1 : 0);
carry = sum / 2; // 更新进位
result = to_string(sum % 2) + result; // 将当前位的结果添加到结果前
}
// 如果还有进位,将它追加到结果最后
if (carry > 0) {
result = '1' + result;
}
return result;
}
};
```
在这个代码中,我们首先初始化一个`carry`变量用于存储进位,然后通过两个指针从后向前遍历输入的二进制字符串,每次取两数对应位置的比特进行相加,并考虑之前的进位。最后,将所有计算出的结果从低位到高位拼接到一起。
阅读全文