मान लीजिए कि हमारे पास एक स्ट्रिंग s है जहां प्रत्येक वर्ण या तो "L", "R" या "?" है। "L" का अर्थ है एक इकाई को बाईं ओर ले जाना, "R" का अर्थ है एक इकाई को दाईं ओर ले जाना, और "?" या तो "एल" या "आर" का अर्थ है। यदि हम 0 की स्थिति में हैं, तो हमें "?" के स्थान पर 0 से अधिकतम संभव दूरी ज्ञात करनी होगी। "एल" या "आर" के साथ।
तो, यदि इनपुट "LLRRL ??" जैसा है, तो आउटपुट 3 होगा, प्रतिस्थापित करें? 5 इकाइयों को बाएं और 2 इकाइयों को दाएं स्थानांतरित करने के लिए एल का उपयोग करना, इसलिए अधिकतम विस्थापन 3 है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
सेशन:=0, एल:=0, आर:=0
-
प्रत्येक के लिए यह s -
. में है-
यदि यह 'L' के समान है, तो -
-
(1 से 1 बढ़ाएँ)
-
-
अन्यथा जब यह 'R' के समान हो, तब -
-
(1 से r बढ़ाएँ)
-
-
अन्यथा
-
(ऑप 1 से बढ़ाएँ)
-
-
-
(एल और आर) की अधिकतम वापसी - न्यूनतम (एल और आर) + सेशन
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
#include <bits/stdc++.h> using namespace std; class Solution { public: int solve(string s) { int op = 0; int l = 0; int r = 0; for (auto &it : s) { if (it == 'L') { l++; } else if (it == 'R') { r++; } else { op++; } } return max(l, r) - min(l, r) + op; } }; main() { Solution ob; cout << (ob.solve("LLRRL??")); }
इनपुट
"LLRRL??"
आउटपुट
3