मान लीजिए हमारे पास दो बाइनरी स्ट्रिंग्स a और b हैं, हमें इन बाइनरी संख्याओं को जोड़ना है और उनका योग ढूंढना है, वह भी एक स्ट्रिंग के रूप में।
उदाहरण के लिए, यदि इनपुट है a = "10110", b = "10010", तो आउटपुट होगा "101000"।
इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:
- ret := खाली स्ट्रिंग
- na := a का आकार, nb := b का आकार
- i := na - 1, j := nb - 1
- carry := 0
- जब तक (i >= 0 या j >= 0), करें:
- addA := (यदि i >= 0, तो a[i] - '0' का ASCII, अन्यथा 0)
- addB := (यदि j >= 0, तो b[j] - '0' का ASCII, अन्यथा 0)
- sum := addA + addB + carry
- carry := sum / 2
- sum := sum mod 2
- ret := ret के साथ sum को जोड़ें
- (i को 1 से घटाएं)
- (j को 1 से घटाएं)
- यदि carry शून्येतर है, तो:
- ret := ret के साथ carry को जोड़ें
- 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