Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมเพื่อเพิ่มสตริงไบนารีสองสตริงและส่งคืนเป็นสตริงไบนารีใน C++


สมมติว่าเรามีสตริงไบนารีสองตัว a และ b เราต้องบวกเลขฐานสองเหล่านี้และหาผลรวมของพวกมัน เช่นเดียวกับสตริง

ดังนั้น หากอินพุตเป็น a ="10110", b ="10010" เอาต์พุตจะเป็น "101000"

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • ret :=สตริงว่าง
  • นา :=ขนาดของ 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 + carry
    • carry :=sum / 2
    • sum :=sum mod 2
    • ret :=ret concatenate sum
    • (ลด i โดย 1)
    • (ลดลง j ทีละ 1)
  • ถ้าการพกพาไม่ใช่ศูนย์ ดังนั้น:
    • ret :=ret concatenate carry
  • ย้อนกลับอาร์เรย์ 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