একটি স্ট্রিং দেওয়া আছে যেখানে প্রতিটি ক্যারেক্টার 'L', 'R' বা '?'। 'L' = বামে ১ ইউনিট, 'R' = ডানে ১ ইউনিট, '?' = 'L' বা 'R' যেকোনোটি। ০ থেকে শুরু করে '?'-গুলো অপ্টিমালি বাছাই করে সর্বোচ্চ দূরত্ব বের করুন।
উদাহরণ
ইনপুট: "LLRRL??"
প্রক্রিয়া: L=3, R=2, ?=2। সব '?'-কে 'L' করলে: বামে ৫, ডানে ২ → দূরত্ব = ৩।
আউটপুট: 3
সূত্র
উত্তর = |L - R| + ?
কারণ সব '?'-কে Mehr-numbered দিকের দিকে দিলে দূরত্ব সর্বোচ্চ হয়।
C++ বাস্তবায়ন
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
int solve(string s) {
int op = 0, l = 0, r = 0;
for (char c : s) {
if (c == 'L') l++;
else if (c == 'R') r++;
else op++;
}
return max(l, r) - min(l, r) + op;
}
};
int main() {
Solution ob;
cout << ob.solve("LLRRL??");
return 0;
}
সময় জটিলতা
O(n) - স্ট্রিং একবার ট্রাভার্স। স্পেস O(1)।