程序添加两个二进制字符串,并在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
猜你喜欢