ধরুন একটি স্ট্রিং s দেওয়া হয়েছে, একটি k ডুপ্লিকেট অপসারণে স্ট্রিং s থেকে k সংলগ্ন এবং সমান অক্ষর বেছে নেওয়া এবং সেগুলিকে অপসারণ করা যার ফলে মুছে ফেলা সাবস্ট্রিংটির বাম এবং ডান দিক একসাথে সংযুক্ত হয়। আমরা প্রদত্ত স্ট্রিং s-এ বারবার k ডুপ্লিকেট অপসারণ করব যতক্ষণ না আমরা অবশিষ্ট কোনো পরিবর্তন করতে না পারি। এই জাতীয় সমস্ত সদৃশ অপসারণ করার পরে আমাদের চূড়ান্ত স্ট্রিংটি খুঁজে বের করতে হবে। সুতরাং ইনপুট যদি s =“deeedbbcccbdaa”, এবং k =3 এর মত হয়, তাহলে আউটপুট হবে “aa”, প্রথমে “eee” এবং “ccc” মুছে ফেলুন এবং আমরা “ddbbbaa” পাব, তারপর “bbb” মুছুন। , স্ট্রিংটি হবে "dddaa", তারপর "ddd" মুছে ফেলুন, এবং আউটপুট হবে "aa"
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- উত্তর :=খালি স্ট্রিং
- char-int জোড়ার জন্য একটি স্ট্যাক তৈরি করুন, n :=স্ট্রিংয়ের আকার
- আমি 0 থেকে n
- পরিসরে
- x :=s[i]
- যদি স্ট্যাক খালি না হয় এবং স্ট্যাকের শীর্ষ উপাদানের পূর্ণসংখ্যা =k, তাহলে স্ট্যাক থেকে শীর্ষ উপাদান মুছে ফেলুন
- যদি i =n, তাহলে বিরতি
- যদি স্ট্যাক খালি হয় বা স্ট্যাকের শীর্ষের অক্ষর x না হয়, তাহলে স্ট্যাকের মধ্যে জোড়া (x, 1) ঢোকান এবং i 1 দ্বারা বাড়ান
- অন্যথায় স্ট্যাকের শীর্ষ উপাদানের পূর্ণসংখ্যার অংশ বাড়ান এবং i 1 দ্বারা বাড়ান
- যখন স্ট্যাক খালি থাকে না
- temp :=স্ট্যাক শীর্ষ উপাদান
- যদিও temp-এর পূর্ণসংখ্যা অংশ 0 নয়,
- উত্তর :=উত্তর + টেম্পের অক্ষর অংশ
- টেম্পের পূর্ণসংখ্যার অংশ 1 কমিয়ে দিন
- স্ট্যাক থেকে শীর্ষ উপাদান মুছুন
- আনস স্ট্রিং বিপরীত করুন এবং রিটার্ন করুন।
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
#include <bits/stdc++.h> using namespace std; class Solution { public: string removeDuplicates(string s, int k) { string ans = ""; stack < pair<char, int> > st; int n = s.size(); for(int i = 0; i <= n;){ char x = s[i]; if(!st.empty() && st.top().second == k)st.pop(); if(i == n)break; if(st.empty() || st.top().first != x){ st.push({x, 1}); i++; } else { st.top().second++; i++; } } while(!st.empty()){ pair <char, int> temp = st.top(); while(temp.second--) ans += temp.first; st.pop(); } reverse(ans.begin(), ans.end()); return ans; } }; main(){ Solution ob; cout <<(ob.removeDuplicates("deeedbbcccbdaa", 3)); }
ইনপুট
"deeedbbcccbdaa" 3
আউটপুট
aa