程序添加两个二进制字符串,并在C ++中也作为二进制字符串返回
假设我们有两个二进制字符串a和b,我们必须将这些二进制数字相加并找到它们的总和,也作为字符串。
因此,如果输入类似于a=“10110”,b=“10010”,则输出将为“101000”。
为了解决这个问题,我们将遵循以下步骤-
ret:=空字符串
na:=a的大小,nb:=b的大小
i:=na-1,j:=nb-1
进位:=0
而(i>=0或j>=0),请执行以下操作:
addA:=(如果i>=0,则a[i]-ASCII为“0”,否则为0)
addB:=(如果j>=0,则b[j]-ASCII为“0”,否则为0)
sum:=addA+addB+进位
进位:=sum/2
sum:=总和2
ret:=ret并置总和
(将i减1)
(将j减1)
如果进位不为零,则:
ret:=ret串联进位
反转数组ret
返回ret
让我们看下面的实现以更好地理解-
示例
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
string solve(string a, string b){
string ret = "";
int na = a.size();
int nb = b.size();
int i = na - 1;
int j = nb - 1;
int carry = 0;
while(i >= 0 || j >= 0){
int addA = i >= 0 ? a[i] - '0' : 0;
int addB = j >= 0 ? b[j] - '0' : 0;
int sum = addA + addB + carry;
carry = sum / 2;
sum %= 2;
ret += to_string(sum);
i--;
j--;
}
if(carry)
ret += to_string(carry); reverse(ret.begin(), ret.end());
return ret;
}
};
main(){
string a = "10110", b = "10010"; Solution ob;
cout << ob.solve(a, b);
}输入值
"10110","10010"
输出结果
101000