ধরুন আমাদের একটি স্ট্রিং s আছে, আমাদের প্রদত্ত স্ট্রিং থেকে ক্রমাগত ডুপ্লিকেট অক্ষরগুলি বাদ দিতে হবে এবং এটি ফিরিয়ে দিতে হবে। সুতরাং, যদি একটি তালিকায় পরপর পুনরাবৃত্তি করা অক্ষর থাকে, তবে সেগুলি অক্ষরের একটি একক অনুলিপি দিয়ে প্রতিস্থাপন করা উচিত। উপাদানের ক্রম আগের মতই থাকবে।
সুতরাং, ইনপুট যদি "heeeeeelllllllloooooo" এর মত হয়, তাহলে আউটপুট হবে "হেলো"
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
ret :=একটি ফাঁকা স্ট্রিং
-
আরম্ভ করার জন্য i :=0, যখন i
-
যদি ret-এর আকার অ-শূন্য হয় এবং ret-এর শেষ উপাদানটি s[i]-এর মতো হয়, তাহলে −
-
নিম্নলিখিত অংশ উপেক্ষা করুন, পরবর্তী পুনরাবৃত্তি এড়িয়ে যান
-
-
ret :=ret concatenate s[i]
-
-
রিটার্ন রিটার্ন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
#include <bits/stdc++.h> using namespace std; class Solution { public: string solve(string s) { string ret = ""; for(int i = 0; i < s.size(); i++){ if(ret.size() && ret.back() == s[i]){ continue; } ret += s[i]; } return ret; } }; int main(){ Solution ob; cout << (ob.solve("heeeeelllllllloooooo")); }
ইনপুট
"heeeeelllllllloooooo"
আউটপুট
helo