leetcode 67.二进制求和"/>
leetcode 67.二进制求和
leetcode 67.二进制求和
题目描述
给定两个二进制字符串,返回他们的和(用二进制表示)。
输入为 非空 字符串且只包含数字 1
和 0
。
示例 1:
输入: a = "11", b = "1"
输出: "100"
示例 2:
输入: a = "1010", b = "1011"
输出: "10101"
解题思路
两个字符串同时从后向前遍历,对于位相加,再加上进位符三者进行运算,需要注意的是字符串第零哥位置进位的情况
class Solution {
public:string addBinary(string a, string b) {int aLen = a.size()-1, bLen = b.size()-1;string res = "";char carry = 0; // 进位标志while(aLen>=0 || bLen>=0){int temp = 0; // 存储字符串对应位相加的结果if(aLen >= 0){temp = a[aLen] - '0';aLen--;} if(bLen >= 0){temp += (b[bLen] - '0');bLen--;}int str = (temp+carry)%2; // 加上进位符,计算当前位的数值res.insert(0, 1, str + '0'); // 在当前字符串的首部插入运算结果carry = (temp+carry)/2; // 是否进位 }if(carry){ // 第零位进位的情况res.insert(0, 1, '1');}return res;}
};
欢迎大家关注我的个人公众号,同样的也是和该博客账号一样,专注分享技术问题,我们一起学习进步
更多推荐
leetcode 67.二进制求和
发布评论