From 6727158c94f3a36800b9e91102df06bc024cf7a2 Mon Sep 17 00:00:00 2001 From: SquidSpirit Date: Wed, 19 Feb 2025 23:32:18 +0800 Subject: [PATCH] feat: 67_add_binary --- 67_add_binary/main.cpp | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 67_add_binary/main.cpp diff --git a/67_add_binary/main.cpp b/67_add_binary/main.cpp new file mode 100644 index 0000000..a1e597f --- /dev/null +++ b/67_add_binary/main.cpp @@ -0,0 +1,30 @@ +#include +using namespace std; + +class Solution { + public: + string addBinary(string a, string b) { + reverse(a.begin(), a.end()); + reverse(b.begin(), b.end()); + + string result; + int carry = 0; + + for (int i = 0; i < a.length() || i < b.length(); i++) { + int da = i >= a.length() ? 0 : a[i] - '0'; + int db = i >= b.length() ? 0 : b[i] - '0'; + + int dc = da + db + carry; + carry = dc / 2; + dc %= 2; + + result.push_back(dc + '0'); + } + + if (carry) result.push_back(carry + '0'); + + reverse(result.begin(), result.end()); + + return result; + } +};