ধরুন আমাদের একটি স্ট্রিং s আছে, আমরা বারবার প্রথম ধারাবাহিক ডুপ্লিকেট অক্ষর মুছে ফেলি। আমাদের চূড়ান্ত স্ট্রিং খুঁজে বের করতে হবে।
সুতরাং, যদি ইনপুটটি s ="xyyyxxz" এর মত হয়, তাহলে আউটপুট হবে "z", যেহেতু "yyy" হল প্রথম পরপর ডুপ্লিকেট অক্ষর যা মুছে ফেলা হবে। তাই আমাদের কাছে "xxxz" আছে। তারপর "xxx" মুছে ফেলা হবে "z" দিয়ে শেষ হবে।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- স্ট্যাক :=একটি নতুন স্ট্যাক
- i :=0
- যখন i
- যদি স্ট্যাক খালি না হয় এবং স্ট্যাকের উপরের অংশটি s[i] এর মতো হয়, তাহলে
- x :=স্ট্যাক থেকে শেষ উপাদান মুছুন
- যখন i
- i :=i + 1
- i :=i - 1
- যদি স্ট্যাক খালি না হয় এবং স্ট্যাকের উপরের অংশটি s[i] এর মতো হয়, তাহলে
- s[i] স্ট্যাকের মধ্যে ঠেলে
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
class Solution: def solve(self, s): stack = [] i = 0 while i < len(s): if len(stack) and stack[-1] == s[i]: x = stack.pop() while i < len(s) and x == s[i]: i += 1 i -= 1 else: stack.append(s[i]) i += 1 return "".join(stack) ob = Solution() s = "xyyyxxz" print(ob.solve(s))
ইনপুট
"xyyyxxz"
আউটপুট
z