概述
思路
1.令两字符串长度相等
2.从后往前相加
3.开头字符单独解决
代码(详细解释)
class Solution {
public:
string addBinary(string a, string b) {
int la = a.size();
int lb = b.size();
while (la>lb) //使两字符串长度相等,便于进位,更好操作
{
b = '0' + b;
++lb;
}
while (lb>la)
{
a = '0' + a;
++la;
}
for (int i=la-1; i>0; --i)//从后往前遍历a,让b加到a上
{
a[i] = a[i]-'0' + b[i]; //a[i]-'0'得到相应的差
if (a[i]>'1')
{
a[i] = (a[i]-'0')%2 + '0';//考虑到a[i]可能是'2',也可能是'3'
a[i-1] += 1;
}
}
a[0] = a[0] - '0' + b[0];//单独解决,避免越位
if (a[0]>'1')
{
a[0] = (a[0]-'0')%2 + '0';
a = '1' + a;
}
return a;
}
};
希望能帮助到你,我将无比快乐。
你的点赞✌️,是我前进的动力。
补充题目
给定两个二进制字符串,返回他们的和(用二进制表示)。
输入为非空字符串且只包含数字 1 和 0。
示例 1:
输入: a = "11", b = "1"
输出: "100"
示例 2:
输入: a = "1010", b = "1011"
输出: "10101"
最后
以上就是潇洒画笔为你收集整理的[C++]LeetCode 简单篇之二进制求和的全部内容,希望文章能够帮你解决[C++]LeetCode 简单篇之二进制求和所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复