Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

निकटतम स्ट्रिंग प्रिंट करें जिसमें C++ में आसन्न डुप्लिकेट नहीं हैं


इस समस्या में, हमें एक स्ट्रिंग दी जाती है। हमारा काम एक स्ट्रिंग को प्रिंट करना है जो वर्तमान स्ट्रिंग के सबसे करीब है और इसमें कोई आसन्न डुप्लिकेट वर्ण नहीं है।

आइए समस्या को समझने के लिए एक उदाहरण लेते हैं

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

  1. C++ प्रोग्राम हैप्पी बर्थडे प्रिंट करने के लिए

    हैप्पी बर्थडे प्रिंट करने के लिए यह एक C++ प्रोग्राम है। एल्गोरिदम Begin    Take a str1 which takes the next character of our desired ouput like for H it will be G.    Assign the string to a pointer p.    Make a while loop till *p != NULL.       Go next c

  1. C++ में वर्चुअल कंस्ट्रक्टर क्यों नहीं है?

    वर्चुअल मैकेनिज्म तभी काम करता है जब हमारे पास व्युत्पन्न क्लास ऑब्जेक्ट के लिए बेस क्लास पॉइंटर होता है। C++ में, कंस्ट्रक्टर वर्चुअल नहीं हो सकता, क्योंकि जब किसी क्लास के कंस्ट्रक्टर को निष्पादित किया जाता है तो मेमोरी में कोई वर्चुअल टेबल नहीं होता है, जिसका अर्थ है कि अभी तक कोई वर्चुअल पॉइंटर

  1. सी ++ में वेक्टर कैसे काम करता है?

    जब कोई तत्व डाला या हटाया जाता है तो वेक्टर स्वचालित रूप से गतिशील सरणी की तरह आकार बदलने की क्षमता रखते हैं, कंटेनर स्वचालित रूप से अपने भंडारण को संभालता है। वेक्टर तत्वों को सन्निहित भंडारण में रखा जाता है ताकि उन्हें इटरेटर्स का उपयोग करके एक्सेस और ट्रैवर्स किया जा सके। डेटा को वेक्टर के आरंभ,