
67. 二进制求和 - 力扣LeetCode67. 二进制求和 - 给你两个二进制字符串 a 和 b 以二进制字符串的形式返回它们的和。 示例 1输入:a 11, b 1输出100示例 2输入a 1010, b 1011输出10101 提示 * 1 a.length, b.length 104 * a 和 b 仅由字符 0 或 1 组成 * 字符串如果不是 0 就不含前导零https://leetcode.cn/problems/add-binary/题目描述给你两个二进制字符串a和b以二进制字符串的形式返回它们的和。示例 输入:a 11, b 1 输出100解题思路二进制字符串相加和手工竖式加法思路一致从最低位字符串末尾开始相加保存进位。使用双指针分别指向两个字符串尾部模拟从低位向高位遍历每次把两个指针指向的数字加上进位t当前结果位 总和 % 2新进位 总和 / 2循环结束后如果进位不为 0需要额外补上最高进位我们得到的结果字符串是低位在前最后反转一次得到正确顺序。#includestring #includealgorithm class Solution { public: string addBinary(string a, string b) { int cur1a.size()-1,cur2b.size()-1; string ret; int t0; while(cur10||cur20) { if(cur10) t a[cur1--] - 0; if(cur20) t b[cur2--] - 0; ret0 (t % 2); tt/2; } if(t1) ret0 t; reverse(ret.begin(), ret.end()); return ret; } };