समस्या कथन
एक बाइनरी स्ट्रिंग दी गई है, कार्य इस बाइनरी स्ट्रिंग से सबस्ट्रिंग 010 को हटाने के लिए न्यूनतम चरणों की गणना करना है
उदाहरण
यदि इनपुट स्ट्रिंग 010010 है तो 2 चरण आवश्यक हैं
- पहले 0 को 1 में बदलें। अब स्ट्रिंग 110010 हो जाती है
- अंतिम 0 को 1 में बदलें। अब अंतिम स्ट्रिंग 110011 हो जाती है
एल्गोरिदम
1. इंडेक्स 0 से n-2 तक स्ट्रिंग पर पुनरावृति करें 2. यदि बाइनरी स्ट्रिंग में लगातार तीन वर्ण '0', '1', '0' हैं तो किसी एक वर्ण को बदला जा सकता है लूप काउंटर को 2 से बढ़ाएं
उदाहरण
#include <bits/stdc++.h> using namespace std; int getMinSteps(string str) { int cnt = 0; for (int i = 0; i < str.length() - 2; ++i) { if (str[i] == '0' && str[i + 1] == '1' && str[i+ 2] == '0') { ++cnt; i += 2; } } return cnt; } int main() { string str = "010010"; cout << "न्यूनतम आवश्यक चरण = " << getMinSteps(str) << endl; return 0; }जब आप उपरोक्त प्रोग्राम को संकलित और निष्पादित करते हैं। यह निम्नलिखित आउटपुट उत्पन्न करता है
आउटपुट
न्यूनतम आवश्यक चरण = 2