मान लीजिए हमारे पास एक स्ट्रिंग s है जहां प्रत्येक अक्षर या तो "L", "R" या "?" है। "L" का अर्थ है एक इकाई बाएं चलना, "R" का अर्थ है एक इकाई दाएं चलना, और "?" का अर्थ है या तो "L" या "R"। यदि हम स्थिति 0 पर हैं, तो हमें "?" को "L" या "R" से बदलकर 0 से अधिकतम संभव दूरी ज्ञात करनी है।
उदाहरण के लिए, यदि इनपुट "LLRRL??" है, तो आउटपुट 3 होगा। ? को L से बदलकर 5 इकाई बाएं और 2 इकाई दाएं चलते हैं, इसलिए अधिकतम विस्थापन 3 है।
समाधान दृष्टिकोण
इस समस्या को हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे:
op := 0, l := 0, r := 0sमें प्रत्येकitके लिए:- यदि
it == 'L', तोl++ - अन्यथा यदि
it == 'R', तोr++ - अन्यथा
op++
- यदि
max(l, r) - min(l, r) + opलौटाएं
C++ कार्यान्वयन
#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;
}
};
int main() {
Solution ob;
cout << (ob.solve("LLRRL??"));
return 0;
}
इनपुट
"LLRRL??"
आउटपुट
3