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

जांचें कि क्या दो तार C++ का उपयोग करके एक दूसरे के विपर्यय हैं

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

उदाहरण के लिए

इनपुट-1 -

a= anagram
b= gnarama

आउटपुट -

True

स्पष्टीकरण - स्ट्रिंग 'ग्नराम' में वही वर्ण है जो स्ट्रिंग 'विपरीत' में है। इसलिए हम ट्रू लौटते हैं।

इनपुट-2 -

a= programmer
b= mprogretmrqp

आउटपुट -

False

स्पष्टीकरण - स्ट्रिंग 'बी' में स्ट्रिंग 'ए' की तुलना में अधिक वर्ण हैं और इस प्रकार हम कह सकते हैं कि स्ट्रिंग की लंबाई अलग है। इस प्रकार हम झूठी वापसी करते हैं।

इस प्रश्न को हल करने के लिए नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है

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

  • इनपुट दो स्ट्रिंग्स 'ए' और 'बी' लें

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

  • स्ट्रिंग 'ए' और 'बी' की लंबाई पाएं और जांचें कि वे बराबर हैं या नहीं। अगर वे बराबर नहीं हैं तो झूठी वापसी करें।

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

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

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

उदाहरण

#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

चूंकि दोनों इनपुट स्ट्रिंग एक दूसरे के विपर्ययण हैं इसलिए यह सच है यानी '1'


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

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

  1. जांचें कि क्या तार एक दूसरे के घूर्णन हैं या नहीं पायथन में

    मान लीजिए कि हमारे पास दो तार s और t हैं, हमें जांचना है कि t, s का घूर्णन है या नहीं। इसलिए, यदि इनपुट s =hello, t =llohe जैसा है, तो आउटपुट ट्रू होगा। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - यदि s का आकार t के आकार के समान नहीं है, तो झूठी वापसी अस्थायी:=एस के साथ फिर से जुड़ना 0 है

  1. पायथन में अन्य दो स्ट्रिंग्स का उपयोग करके अंतिम स्ट्रिंग बनाई जा सकती है या नहीं, यह जांचने के लिए प्रोग्राम

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