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; + } +};