मान लीजिए कि हमारे पास n बिट्स के साथ एक बाइनरी स्ट्रिंग S है। कोई निरर्थक अग्रणी शून्य नहीं हैं। हम S पर दो अलग-अलग ऑपरेशन कर सकते हैं -
-
आसन्न बिट्स के किसी भी जोड़े को स्वैप करें
-
सभी "11" को "1" से बदलें
मान लें कि वैल (एस) एस का दशमलव प्रतिनिधित्व है। हमें न्यूनतम सही स्ट्रिंग ढूंढनी है, जहां वैल (ए) <वैल (बी)
होने पर सही स्ट्रिंग ए एक और सही स्ट्रिंग 'बी' से कम है।इसलिए, यदि इनपुट S ="1001" जैसा है, तो आउटपुट 100 होगा, क्योंकि हम "1001" -> "1010" -> "1100" -> "100" जैसे ऑपरेशन कर सकते हैं।
कदम
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
n := size of S res := a blank string res := res + S[0] for initialize i := 1, when i < n, update (increase i by 1), do: if S[i] is same as '0', then: res := res concatenate "0" return res
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
#include <bits/stdc++.h>
using namespace std;
string solve(string S){
int n = S.size();
string res = "";
res += S[0];
for (int i = 1; i < n; i++){
if (S[i] == '0'){
res += "0";
}
}
return res;
}
int main(){
string S = "1001";
cout << solve(S) << endl;
} इनपुट
"1001"
आउटपुट
100