ধরুন আমাদের কাছে ছোট হাতের অক্ষরের একটি স্ট্রিং S আছে; একটি ডুপ্লিকেট অপসারণ অপারেশন সঞ্চালিত হবে. এটি দুটি সন্নিহিত এবং সমান অক্ষর নির্বাচন করে এবং তাদের অপসারণ করে করা হবে।
আমরা বারবার S থেকে সদৃশগুলি সরিয়ে দেব যতক্ষণ না কোনও সদৃশ অবশিষ্ট না থাকে৷
৷এই ধরনের সব ডুপ্লিকেট অপসারণ সম্পন্ন হওয়ার পরে স্ট্রিংটি ফেরত দিন। এটা নিশ্চিত যে উত্তরটি অনন্য।
ধরুন স্ট্রিংটি "abbacaca", তাহলে উত্তর হবে "caca"। প্রথমে ডুপ্লিকেট মুছুন bb, তারপর স্ট্রিং হল “aacaca”, তারপর aa রিমুভ করুন, তারপর স্ট্রিং হল “caca”, তারপরে এরকম কোন ডুপ্লিকেট নেই।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- একটি অ্যারে st সংজ্ঞায়িত করুন, এবং শুরু করুন i :=0
- যখন i <স্ট্রিংয়ের দৈর্ঘ্য −
- যদি st-এর কিছু উপাদান থাকে, এবং st =st[i]-এর শেষ উপাদান থাকে, তাহলে i 1 দ্বারা বাড়ান, এবং st থেকে শেষ উপাদান মুছে ফেলুন
- অন্যথায় st এ string[i] যোগ করুন, i 1 দ্বারা বাড়ান
- অবশেষে একটি স্ট্রিং হিসাবে st এ সমস্ত উপাদান যোগ করুন এবং ফিরে আসুন
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
class Solution(object): def removeDuplicates(self, S): st = [] i = 0 while i < len(S): if len(st)!=0 and st[-1]==S[i]: i+=1 st.pop(-1) else: st.append(S[i]) i+=1 return "".join(i for i in st) ob1 = Solution() print(ob1.removeDuplicates("abbacaca"))
ইনপুট
"abbacaca"
আউটপুট
"caca"