इस समस्या में, हमें एक स्ट्रिंग दी जाती है। हमारा काम एक स्ट्रिंग को प्रिंट करना है जो वर्तमान स्ट्रिंग के सबसे करीब है और इसमें कोई आसन्न डुप्लिकेट वर्ण नहीं है।
आइए समस्या को समझने के लिए एक उदाहरण लेते हैं
Input: string = “good” Output: goad
इस उदाहरण में, हमने पाया कि इंडेक्स 1 और 2 के तत्व समान हैं, इसलिए हम इंडेक्स 2 पर तत्वों को बदलते हैं।
इस समस्या को हल करने के लिए, हम स्ट्रिंग को पार करेंगे और जांचेंगे कि क्या कोई दो आसन्न तत्व समान हैं। यदि हाँ, तो दूसरा तत्व बदलें (यदि i और i+1 तत्व समान हैं, तो i+1 तत्व बदलें)। इसे हल करने के लिए लालची एल्गोरिथम का उपयोग किया जाएगा और समान तत्वों के प्रत्येक आसन्न जोड़े के लिए, हम एक बदलाव करेंगे। एक बात हमें ध्यान में रखनी है कि बदलते समय सभी आस-पास के तत्वों की जांच कर रहे हैं यानी अगर हम परिवर्तन के बाद से ith तत्व बदल रहे हैं तो i+1 और 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