淘宝不能发布网站源码做商品,学做淘宝店的网站,做外贸网站哪家好,东莞公共资源交易中心二进制求和 已解答 简单 相关标签 相关企业 给你两个二进制字符串 a 和 b #xff0c;以二进制字符串的形式返回它们的和。
示例 1#xff1a;
输入:a “11”, b “1” 输出#xff1a;“100” 示例 2#xff1a;
输入#xff1a;a “1010”, b “1011” 输出…二进制求和 已解答 简单 相关标签 相关企业 给你两个二进制字符串 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” 就不含前导零
解题思路
将两字符串倒置依次进行相加遇到二进位。
class Solution {
public:string addBinary(string a, string b) {string answer;reverse(a.begin(),a.end());reverse(b.begin(),b.end());int n max(a.size(),b.size());int carry 0; //进位值for(size_t i0;in;i){/*根据当前位置 i 的字符值来更新 carry进位如果超出字符串的长度填充0如果没超出等于一就返回1不等于1就是0*/carry ( ia.size() ? (a.at(i)1) : 0 );carry (i b.size() ? (b.at(i)1) : 0 );answer.push_back( (carry % 2) ? 1 : 0);carry / 2; /* carry / 2; 这一操作更新 carry决定是否有进位需要带到下一位的计算中。例如当 carry 为 2 或 3 时需要产生进位 1因此 carry / 2 的结果为 1即将进位传递给下一位。*/}if(carry){//如果还有进位插入1.answer.push_back(1);}reverse(answer.begin(),answer.end());//-逆序return answer;}
};