কম্পিউটার টিউটোরিয়াল

C++-এ সন্নিহিত ডুপ্লিকেট ছাড়া নিকটতম স্ট্রিং প্রিন্ট করা

এই সমস্যায় একটি স্ট্রিং দেওয়া আছে। আমাদের একটি স্ট্রিং প্রিন্ট করতে হবে যা বর্তমান স্ট্রিংয়ের নিকটতম এবং যাতে কোনো সন্নিহিত ডুপ্লিকেট অক্ষর না থাকে।

উদাহরণ:

ইনপুট: "good"
আউটপুট: "goad"

এই উদাহরণে, ইনডেক্স ১ এবং ২-এ একই অক্ষর 'o' পাওয়া গেলে, ইনডেক্স ২-এর অক্ষরটি পরিবর্তন করা হয়েছে।

সমাধান

স্ট্রিংটি ট্রাভার্স করে যেকোনো দুটি সন্নিহিত উপাদান একই কিনা তা চেক করা হবে। যদি হয়, তবে দ্বিতীয় উপাদানটি পরিবর্তন করা হবে (যদি i এবং i+1 একই হয়, তবে i+1 পরিবর্তন করতে হবে)। এই সমস্যাটি লালচী অ্যালগরিদম (greedy algorithm) দিয়ে সমাধান করা হয়, যেখানে প্রতিটি সন্নিহিত ডুপ্লিকেট জোড়ার জন্য একটি পরিবর্তন করা হয়। পরিবর্তন করার সময় সন্নিহিত সব উপাদান চেক করতে হয় যাতে পরিবর্তন করা উপাদান তার আগের ও পরের উপাদানের সাথে আলাদা হয়।

উদাহরণ

#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
  1. C++-এ ডুপ্লিকেট থাকা স্ট্রিংয়ের ডিস্টিংক্ট সর্টেড পারমুটেশন প্রিন্ট করুন

  2. C++ প্রোগ্রাম: হ্যাপি বার্থডে প্রিন্ট করা

  3. C++-এ কেন ভার্চুয়াল কনস্ট্রাক্টর নেই?

  4. C++-এ ভেক্টর কীভাবে কাজ করে?