একটি স্ট্রিং s দেওয়া আছে যেটে শুধু 'x' এবং 'y' আছে। একটি অপারেশনে একটি 'x'-কে 'y' বা 'y'-কে 'x' বদলানো যায়। সব 'x' সব 'y'-র আগে আনার জন্য ন্যূনতম কতবার অপারেশন লাগবে তা বের করতে হবে।
উদাহরণ: s = "yxyyyyxyxx" → আউটপুট 4।
সমাধানের ধাপসমূহ (গ্রিডি / প্রিফিক্স কাউন্ট)
y_left := 0 (বাম পাশে কতটি 'y' আছে)।
x_right :=
s.count('x')(ডান পাশে কতটি 'x' আছে), res :=x_right।প্রতিটি ক্যারেক্টার
item∈sএর জন্য:যদি
item == 'x', তবেx_right--।অন্যথায়
y_left++।res = min(res, y_left + x_right)আপডেট করুন।
resরিটার্ন করুন।
পাইথন কোড উদাহরণ
class Solution:
def solve(self, s):
y_left = 0
x_right = res = s.count("x")
for item in s:
if item == "x":
x_right -= 1
else:
y_left += 1
res = min(res, y_left + x_right)
return res
ob = Solution()
s = "yxyyyyxyxx"
print(ob.solve(s))
ইনপুট
"yxyyyyxyxx"
আউটপুট
4