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

C++ में आसन्न डुप्लिकेट के बिना निकटतम स्ट्रिंग प्रिंट करना


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

उदाहरण

Input: string = "good" 
Output: goad

इस उदाहरण में, इंडेक्स 1 और 2 पर एलिमेंट समान हैं, इसलिए हम इंडेक्स 2 पर एलिमेंट को बदलते हैं।

समाधान दृष्टिकोण

इस समस्या को हल करने के लिए, हम स्ट्रिंग को पार करते हैं और जांचते हैं कि क्या कोई दो आसन्न एलिमेंट समान हैं। यदि हां, तो दूसरे एलिमेंट को बदल दें (यदि i और i+1 एलिमेंट समान हैं, तो i+1 एलिमेंट बदलें)। इसे हल करने के लिए लालची एल्गोरिदम का उपयोग किया जाता है और आसन्न समान एलिमेंट्स के प्रत्येक जोड़े के लिए, हम एक परिवर्तन करते हैं। एक बात ध्यान रखनी है कि बदलते समय सभी आसपास के एलिमेंट्स की जांच करें - यानी यदि हम iवें एलिमेंट को बदल रहे हैं तो परिवर्तन के बाद 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 original string is : " << str << endl; 
    cout << "String without adjacent duplicate characters is : "; 
    printStringWithNoDuplicates(str); 
    return 0; 
}

आउटपुट

The original string is : good 
String without adjacent duplicate characters is : goad

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

    यह C++ प्रोग्राम हैप्पी बर्थडे संदेश को एक अनोखे तरीके से प्रिंट करता है। यह प्रोग्राम कैरेक्टर मैनिपुलेशन (character manipulation) का उपयोग करके प्रत्येक कैरेक्टर को उसके अगले ASCII कैरेक्टर में बदलता है और फिर उसे प्रिंट करता है। एल्गोरिदम शुरुआत 1. एक स्ट्रिंग str1 लें जिसमें हमारे वांछित आउट

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

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

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

    वेक्टर में डायनामिक ऐरे की तरह खुद को ऑटोमैटिकली रीसाइज़ करने की क्षमता होती है। जब कोई एलिमेंट डाला या हटाया जाता है, तो कंटेनर अपने स्टोरेज को ऑटोमैटिकली संभालता है। वेक्टर एलिमेंट्स सन्निहित (contiguous) स्टोरेज में रखे जाते हैं ताकि उन्हें इटरेटर्स का उपयोग करके एक्सेस और ट्रैवर्स किया जा सके। ड