二进制求和
难度简单881收藏分享切换为英文接收动态反馈
给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。
示例 1:
输入: a = "11", b = "1" 输出: "100" • 1 • 2
示例 2:
输入: a = "1010", b = "1011" 输出: "10101"
提示:
- 1 <= a.length, b.length <= 104
- a 和 b 仅由字符 '0' 或 '1' 组成
- 字符串如果不是 "0" ,就不含前导零
我的代码:
class Solution { public: string addBinary(string a, string b) { string ans; // 先翻转字符串 然后方便相加 reverse(a.begin(), a.end()); reverse(b.begin(), b.end()); int carry = 0; // 进位 int n = max(a.size(), b.size()); for (int i = 0; i < n; ++ i) { // 属实是把问号运算符玩明白了 if (i < a.size()) carry += a[i] == '1' ? 1 : 0; if (i < b.size()) carry += b[i] == '1' ? 1 : 0; ans.push_back(carry % 2 ? '1' : '0'); carry /= 2; } if (carry) ans.push_back('1'); // 进位位还在 reverse(ans.begin(), ans.end()); return ans; } };