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

C++ का उपयोग करके जांचें कि दो स्ट्रिंग्स एक-दूसरे के एनाग्राम हैं या नहीं


मान लीजिए हमारे पास दो स्ट्रिंग्स 'a' और 'b' दी गई हैं। हमें जांचना है कि दी गई दो स्ट्रिंग्स एक-दूसरे की एनाग्राम हैं या नहीं। दो स्ट्रिंग्स को एक-दूसरे की एनाग्राम कहा जाता है यदि एक स्ट्रिंग में दूसरे के समान वर्ण हों।

उदाहरण के लिए

इनपुट-1 -

a = anagram b = gnarama

आउटपुट -

True

व्याख्या - स्ट्रिंग 'gnarama' में वही वर्ण हैं जो स्ट्रिंग 'anagram' में हैं। इसलिए हम True लौटाते हैं।

इनपुट-2 -

a = programmer b = mprogretmrqp

आउटपुट -

False

व्याख्या - स्ट्रिंग 'b' में स्ट्रिंग 'a' से अधिक वर्ण हैं और इस प्रकार हम कह सकते हैं कि स्ट्रिंग की लंबाई अलग है। इस प्रकार हम False लौटाते हैं।

नीचे दिए गए प्रोग्राम में इस प्रश्न को हल करने के लिए उपयोग किया गया दृष्टिकोण इस प्रकार है

दिए गए दो स्ट्रिंग्स के लिए हमारे पास स्ट्रिंग की लंबाई है यदि स्ट्रिंग की लंबाई अलग है तो हम False लौटाएंगे। अन्यथा, यदि स्ट्रिंग की लंबाई समान है तो हम जांचेंगे कि क्या उस स्ट्रिंग का प्रत्येक वर्ण दूसरी स्ट्रिंग के वर्णों से मेल खाता है और True लौटाएं अन्यथा False।

  • दो स्ट्रिंग्स 'a' और 'b' का इनपुट लें

  • एक बूलियन फंक्शन checkAnagram(string a, string b) दो स्ट्रिंग्स 'a' और स्ट्रिंग 'b' लेता है और लौटाता है कि वे एक-दूसरे की एनाग्राम हैं या नहीं।

  • स्ट्रिंग 'a' और 'b' की लंबाई ढूंढें और जांचें कि वे समान हैं या नहीं। यदि वे समान नहीं हैं तो false लौटाएं।

  • C++ STL (स्टैंडर्ड टेम्पलेट लाइब्रेरी) मैप फंक्शन का उपयोग करके, स्ट्रिंग 'a' के प्रत्येक वर्ण की एक हैश टेबल बनाएं स्ट्रिंग 'a' पर पुनरावृति करके।

  • स्ट्रिंग 'a' के प्रत्येक वर्ण का मैप बनाते समय उन वर्णों को हटा दें जो स्ट्रिंग 'b' में मौजूद हैं।

  • फिर मैप पर पुनरावृति करें और जांचें कि क्या हैश टेबल में कोई वर्ण बचे हैं और False लौटाएं अन्यथा True लौटाएं।

उदाहरण

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

bool checkAnagram(string a, string b) {
    int len1 = a.length();
    int len2 = b.length();
    if (len1 != len2) {
        return false;
    }
    unordered_map<char, int> mp;
    for (int i = 0; i < a.size(); i++) {
        mp[a[i]]++;
        mp[b[i]]--;
    }
    for (auto it : mp) {
        if (it.second) return false;
    }
    return true;
}

int main() {
    string a = "anagram";
    string b = "gnarama";
    cout << checkAnagram(a, b) << endl;
    return 0;
}

आउटपुट

यदि हम उपरोक्त कोड चलाएंगे तो यह आउटपुट के रूप में प्रिंट करेगा,

1

चूंकि दोनों इनपुट स्ट्रिंग्स एक-दूसरे की एनाग्राम हैं इसलिए यह True यानी '1' लौटाता है।


  1. C++ में दो बाइनरी स्ट्रिंग्स को जोड़ें C++ में दो बाइनरी स्ट्रिंग्स को जोड़ें

    दो बाइनरी संख्या वाली स्ट्रिंग्स दी गई हैं, हमें उन दो बाइनरी स्ट्रिंग्स को जोड़कर प्राप्त परिणाम ढूंढना है और परिणाम को बाइनरी स्ट्रिंग के रूप में लौटाना है। बाइनरी संख्याएं वे संख्याएं हैं जिन्हें या तो 0 या 1 के रूप में व्यक्त किया जाता है। 2 बाइनरी संख्याओं को जोड़ते समय बाइनरी जोड़ का नियम हो

  1. - पायथन में जांचें कि दो स्ट्रिंग्स एक-दूसरे का रोटेशन हैं या नहीं

    मान लीजिए हमारे पास दो स्ट्रिंग्स s और t हैं, हमें जांचना है कि क्या t, s का रोटेशन है या नहीं। उदाहरण के लिए, यदि s = hello, t = llohe है, तो आउटपुट True होगा। हल करने का तरीका यदि s और t की लंबाई अलग है, तो False लौटाएं temp := s को s से जोड़ें (s + s) यदि temp में t मौजूद है, तो True लौटाएं अन्

  1. - पायथन में दो स्ट्रिंग्स से अंतिम स्ट्रिंग बनने की जांच करने का प्रोग्राम

    मान लीजिए हमारे पास दो स्ट्रिंग्स s, t, और एक अन्य स्ट्रिंग r है हमें जांचना है कि क्या s और t से क्रम में वर्णों को मर्ज करके r प्राप्त करने का कोई तरीका है। इसलिए, यदि इनपुट s = xyz t = mno r = xymnoz जैसा है, तो आउटपुट True होगा, क्योंकि xymnoz को xyz और mno को इंटरलीव करके बनाया जा सकता है। हल