এই সমস্যায়, আমাদের একটি স্ট্রিং দেওয়া হয়েছে। আমাদের কাজ হল এমন একটি স্ট্রিং প্রিন্ট করা যা বর্তমান স্ট্রিংয়ের সবচেয়ে কাছাকাছি এবং এতে কোনো সংলগ্ন ডুপ্লিকেট অক্ষর নেই৷
সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক
Input: string = “good” Output: goad
এই উদাহরণে, আমরা দেখেছি যে সূচক 1 এবং 2-এর উপাদানগুলি একই, তাই আমরা সূচক 2-এর উপাদানগুলি পরিবর্তন করি৷
এই সমস্যাটি সমাধান করতে, আমরা স্ট্রিংটি অতিক্রম করব এবং পরীক্ষা করব যে কোনও দুটি সন্নিহিত উপাদান একই আছে কিনা। যদি হ্যাঁ, তাহলে দ্বিতীয় উপাদান পরিবর্তন করুন (যদি i এবং i+1 উপাদান একই হয়, i+1 উপাদান পরিবর্তন করুন)। এটি সমাধান করার জন্য লোভী অ্যালগরিদম ব্যবহার করা হবে এবং অনুরূপ উপাদানগুলির প্রতিটি সন্নিহিত জোড়ার জন্য, আমরা একটি পরিবর্তন করব। একটি জিনিস আমাদের মনে রাখতে হবে তা হল পরিবর্তন করার সময় আশেপাশের সমস্ত উপাদান পরীক্ষা করা, অর্থাৎ যদি আমরা i+1 পরিবর্তনের পরে ith উপাদান পরিবর্তন করি এবং i সূচক উপাদানটি ভিন্ন হওয়া উচিত।
উদাহরণ
আমাদের সমাধানের বাস্তবায়ন দেখানোর জন্য প্রোগ্রাম,
#include <iostream> #include <string.h> using namespace std; void printStringWithNoDuplicates(string str){ int len = str.length(); for (int i = 1; i < len; i++){ if (str[i] == str[i - 1]){ str[i] = 'a'; while (str[i] == str[i - 1] || (i + 1 < len && str[i] == str[i + 1])) str[i]++; i++; } } cout<<str; } int main(){ string str = "good"; cout<<"The orignal string is : "<<str<<endl; cout<<"String without adjecent duplicate characters is : "; printStringWithNoDuplicates(str); return 0; }
আউটপুট
The orignal string is : good String without adjecent duplicate characters is : goad