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

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

บวกเลขไบนารีที่เก็บเป็นสตริง คืนผลลัพธ์เป็นสตริงไบนารี (ไม่แปลงเป็น int)

ตัวอย่าง: "10110" + "10010" = "101000"

อัลกอริธึม

  • เดินจากขวาไปซ้าย (LSB ไป MSB)
  • บวกบิตแต่ละตำแหน่ง + carry
  • ผลบิต = sum % 2, carry = sum // 2
  • สุดท้ายถ้า carry=1 ให้เพิ่มด้านหน้า แล้ว reverse ผลลัพธ์

โค้ด C++

#include 
using namespace std;

class Solution {
public:
    string solve(string a, string b) {
        string ret = "";
        int na = a.size(), nb = b.size();
        int i = na - 1, j = nb - 1, 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;
    }
};

int main() {
    string a = "10110", b = "10010";
    Solution ob;
    cout << ob.solve(a, b);  // 101000
}