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

C++ में दिए गए स्ट्रिंग ऐरे में सभी एनाग्राम जोड़े प्रिंट करना


इस समस्या में, हमें स्ट्रिंग्स का एक ऐरे दिया गया है और हमें उस दिए गए ऐरे के सभी एनाग्राम जोड़े प्रिंट करने हैं।

एनाग्राम

एनाग्राम वे स्ट्रिंग्स हैं जो किसी अन्य स्ट्रिंग के कैरेक्टर्स को पुनर्व्यवस्थित करके बनाई जाती हैं। जैसे - hello और lolhe

उदाहरण

Input: array = {"hello", "hrdef", "from", "lohel", "morf"}. 
Output: [hello, lohel] , [from , morf]

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

उदाहरण

उस एल्गोरिदम को लागू करने वाला प्रोग्राम देखते हैं:

#include <iostream> 
using namespace std; 

#define NO_OF_CHARS 256 

bool isAnagramString(string str1, string str2) { 
    int count[NO_OF_CHARS] = {0}; 
    int i; 
    for (i = 0; str1[i] && str2[i]; i++) { 
        count[str1[i]]++; 
        count[str2[i]]--; 
    } 
    if (str1[i] || str2[i]) 
        return false; 
    for (i = 0; i < NO_OF_CHARS; i++) 
        if (count[i]) 
            return false; 
    return true; 
} 

void printAnagrams(string arr[], int n) { 
    for (int i = 0; i < n; i++) 
        for (int j = i+1; j < n; j++) 
            if (isAnagramString(arr[i], arr[j])) 
                cout << arr[i] << " and " << arr[j] << " are anagrams.\n"; 
} 

int main() { 
    string arr[] = {"hello", "hrdef", "from", "lohel", "morf"}; 
    int n = sizeof(arr) / sizeof(arr[0]); 
    printAnagrams(arr, n); 
    return 0; 
}

आउटपुट

hello and lohel are anagrams. 
from and morf are anagrams.

यह समाधान समझने में काफी आसान है लेकिन कम कुशल है। इसलिए हमारे समाधान में कुछ ऑप्टिमाइज़ेशन किए जा सकते हैं ताकि इसे और अधिक प्रभावी बनाया जा सके। हम इसे अपने ऐरे को सॉर्ट करके कर सकते हैं जिसमें स्ट्रिंग्स हों। यह सॉर्टेड ऐरे एनाग्राम ढूंढना आसान बना देगा।


  1. - C++ में स्ट्रिंग के सभी पैलिंड्रोम क्रमपरिवर्तन प्रिंट करें

    इस समस्या में, हमें एक स्ट्रिंग दी गई है और हमें उस स्ट्रिंग के वर्णों से संभव सभी पैलिंड्रोमिक क्रमपरिवर्तन प्रिंट करने हैं। समस्या को समझने के लिए एक उदाहरण लेते हैं - इनपुट - स्ट्रिंग = aabb आउटपुट - abba baab इस समस्या को हल करने के लिए हमें स्ट्रिंग के वर्णों को लेना होगा और एक-एक करके इन वर्णो

  1. - C++ में दिए गए स्ट्रिंग के सभी सबस्ट्रिंग प्रिंट करने का प्रोग्राम

    इस ट्यूटोरियल में, हम दिए गए स्ट्रिंग के सभी सबस्ट्रिंग प्रिंट करने के प्रोग्राम पर चर्चा करेंगे। इसके लिए हमें एक स्ट्रिंग या कैरेक्टर्स का ऐरे दिया जाएगा। हमारा कार्य उस विशेष स्ट्रिंग के सभी सबस्ट्रिंग प्रिंट करना है। उदाहरण #include using namespace std; // सभी सबस्ट्रिंग प्रिंट करना void pr

  1. - C++ में स्ट्रिंग्स का ऐरे

    C++ में स्ट्रिंग कीवर्ड का उपयोग करके स्ट्रिंग्स का ऐरे बनाया जा सकता है। यहां हम इस दृष्टिकोण का उपयोग करके एक C++ प्रोग्राम पर चर्चा कर रहे हैं। एल्गोरिदम Begin स्ट्रिंग कीवर्ड द्वारा ऐरे के तत्वों को इनिशियलाइज़ करें। और स्ट्रिंग को इनपुट के रूप में लें। ऐरे प्रिंट करें। End. उदाहरण को