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

C++ प्रोग्राम में दो स्ट्रिंग्स के असामान्य कैरेक्टर्स ढूंढना


परिचय

इस ट्यूटोरियल में हम दी गई दो स्ट्रिंग्स से विशिष्ट (distinct) कैरेक्टर्स ढूंढना सीखेंगे। आइए एक उदाहरण देखते हैं।

इनपुट

string_one = "tutorialspoint"
string_two = "tutorialsworld"

आउटपुट

d n p w

हम इस समस्या को हल करने के लिए हैशिंग (hashing) का उपयोग करेंगे। यह दो नेस्टेड लूप लिखने से अधिक कुशल है।

समस्या समाधान के चरण

  1. दोनों स्ट्रिंग्स को कुछ रैंडम मानों से इनिशियलाइज़ करें।
  2. map<char, int> chars के रूप में एक मैप इनिशियलाइज़ करें।
  3. पहली स्ट्रिंग पर पुनरावृत्ति करें और प्रत्येक कैरेक्टर को मान 1 के साथ मैप में डालें।
  4. अब, दूसरी स्ट्रिंग पर पुनरावृत्ति करें।
    • जांचें कि कैरेक्टर पहले से मौजूद है या नहीं।
    • यदि मौजूद है, तो इसे 0 असाइन करें।
    • यदि मौजूद नहीं है, तो कैरेक्टर को मान 1 के साथ डालें।
  5. मैप पर पुनरावृत्ति करें और मान 1 वाले कैरेक्टर्स प्रिंट करें।

उदाहरण कोड

#include <bits/stdc++.h>
#include <map>
using namespace std;

void findDistinctCharacters(string one, string two){
    // स्ट्रिंग में कैरेक्टर उपस्थिति इनिशियलाइज़ करना
    map<char, int> chars;
    // पहली स्ट्रिंग पर पुनरावृत्ति
    for (int i = 0; i < one.size(); ++i){
        // प्रत्येक कैरेक्टर को मैप में डालना
        chars.insert({one[i], 1});
    }
    // दूसरी स्ट्रिंग पर पुनरावृत्ति
    for (int i = 0; i < two.size(); ++i){
        // जांचें कि वर्तमान कैरेक्टर स्ट्रिंग में है या नहीं
        if (chars.count(two[i])) {
            // सामान्य कैरेक्टर्स के लिए 0 असाइन करना
            chars.find(two[i])->second = 0;
        } else {
            // नए कैरेक्टर्स डालना
            chars.insert({two[i], 1});
        }
    }
    // विशिष्ट कैरेक्टर्स प्रिंट करना
    for (auto item: chars){
        // उपस्थिति जांचना
        if (item.second == 1) {
            // विशिष्ट कैरेक्टर प्रिंट करना
            cout << item.first << " ";
        }
    }
}

int main(){
    string one = "tutorialspoint";
    string two = "tutorialsworld";
    findDistinctCharacters(one, two);
    return 0;
}

आउटपुट

d n p w

व्याख्या

"tutorialspoint" और "tutorialsworld" में सामान्य अक्षर: t, u, o, r, i, a, l, s। विशिष्ट: पहली स्ट्रिंग में p, n; दूसरी में d, w।

निष्कर्ष

हैशिंग का उपयोग करके यह समाधान O(n+m) समय में काम करता है जहां n और m स्ट्रिंग्स की लंबाई हैं। यदि आपके कोई प्रश्न हैं, तो कमेंट सेक्शन में पूछें।


  1. C++ में रेखा का मध्य बिंदु खोजने का प्रोग्राम C++ में रेखा का मध्य बिंदु खोजने का प्रोग्राम

    इस समस्या में, हमें दो बिंदु A और B दिए गए हैं, एक रेखा के प्रारंभिक और अंतिम बिंदु। हमारा कार्य C++ में रेखा का मध्य बिंदु खोजने के लिए एक प्रोग्राम बनाना है। समस्या विवरण यहां, हमारे पास प्रारंभिक और अंतिम बिंदु A(x1, y1) और B(x2, y2) वाली एक रेखा है। और हमें रेखा का मध्य बिंदु ज्ञात करना है। उद

  1. C++ में त्रिभुज के केंद्रक (Centroid) ज्ञात करने का प्रोग्राम C++ में त्रिभुज के केंद्रक (Centroid) ज्ञात करने का प्रोग्राम

    इस समस्या में, हमें एक 2D ऐरे दिया गया है जो त्रिभुज के तीन शीर्षों के निर्देशांक को दर्शाता है। हमारा कार्य C++ में त्रिभुज के केंद्रक (Centroid) ज्ञात करने का प्रोग्राम बनाना है।केंद्रक (Centroid) त्रिभुज का वह बिंदु है जहां त्रिभुज की तीनों मध्यिकाएं (medians) प्रतिच्छेद करती हैं।मध्यिका (Median)

  1. C++ में समानांतर चतुर्भुज (Parallelogram) का क्षेत्रफल ज्ञात करने का प्रोग्राम C++ में समानांतर चतुर्भुज (Parallelogram) का क्षेत्रफल ज्ञात करने का प्रोग्राम

    इस समस्या में, हमें दो मान दिए गए हैं जो समानांतर चतुर्भुज के आधार (base) और ऊंचाई (height) को दर्शाते हैं। हमारा कार्य C++ में समानांतर चतुर्भुज (Parallelogram) का क्षेत्रफल ज्ञात करने का प्रोग्राम बनाना है।समानांतर चतुर्भुज (Parallelogram) चार भुजाओं वाली एक बंद आकृति है जिसकी विपरीत भुजाएं समान औ