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