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

C++ में दो स्ट्रिंग्स का सबसे बड़ा मर्ज

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

  • यदि स्ट्रिंग 'ए' गैर-रिक्त है, तो स्ट्रिंग 'ए' से पहले अक्षर को हटा दें और इसे स्ट्रिंग 'मर्ज' में कॉपी करें।
  • यदि स्ट्रिंग 'बी' गैर-रिक्त है, तो स्ट्रिंग 'बी' से पहले अक्षर को हटा दें और इसे स्ट्रिंग 'मर्ज' में कॉपी करें।
  • यदि स्ट्रिंग्स 'ए' और 'बी' गैर-रिक्त हैं, तो स्ट्रिंग 'ए' से पहले वर्णों को हटा दें और इसे स्ट्रिंग 'मर्ज' में कॉपी करें और फिर स्ट्रिंग 'बी' से पहले अक्षर (यदि कोई हो) को हटा दें। ' और इसे 'मर्ज' स्ट्रिंग में कॉपी करें।
  • दोनों स्ट्रिंग्स से वर्णों को लेक्सिकोग्राफ़िक रूप से हटा दें, जिसका अर्थ है, यदि स्ट्रिंग 'ए' स्ट्रिंग 'बी' से बड़ी है, तो स्ट्रिंग 'ए' से वर्ण हटा दें और फिर स्ट्रिंग 'बी'।
  • स्ट्रिंग 'मर्ज' लौटाएं।

उदाहरण के लिए

इनपुट-1:

a = “bacaa”

b = “abcaa”

आउटपुट:

babcacaaaa

स्पष्टीकरण:

चूंकि दी गई स्ट्रिंग 'ए' स्ट्रिंग 'बी' से शब्दावली की दृष्टि से बड़ी है, इसलिए हम स्ट्रिंग 'ए' से पहला अक्षर निकालेंगे, यानी, "बी" और फिर स्ट्रिंग 'बी' से। निकालने के बाद, स्ट्रिंग "babcacaaaa" होगी।

इस समस्या को हल करने का तरीका

इस समस्या को हल करने के लिए पुनरावर्ती दृष्टिकोण यह है कि हम स्ट्रिंग 'ए' और स्ट्रिंग 'बी' के प्रत्येक वर्ण को निकालेंगे और जांच करेंगे कि क्या स्ट्रिंग 'ए' के ​​अक्षर अन्य स्ट्रिंग की तुलना में लेक्सिकोग्राफिक रूप से बड़े हैं और अंत में स्ट्रिंग 'मर्ज' से जुड़ते हैं। ।

हम कई पदों के बाद प्रत्येक वर्ण की सबस्ट्रिंग पाएंगे और 'मर्ज' में संयोजित होंगे यदि यह अन्य स्ट्रिंग की तुलना में शब्दावली से बड़ा है।

  • दो इनपुट स्ट्रिंग 'ए' और 'बी' लें।
  • एक पुनरावर्ती स्ट्रिंग फ़ंक्शन concatenateLargest(string a, string b) इनपुट के रूप में दो स्ट्रिंग लेता है और संयोजन के बाद सबसे बड़ी स्ट्रिंग देता है, यानी, (स्ट्रिंग 'ए' + स्ट्रिंग 'बी')।
  • यदि दोनों तार खाली हैं, तो स्ट्रिंग 'ए' + स्ट्रिंग 'बी' लौटाएं।
  • यदि स्ट्रिंग 'ए' स्ट्रिंग 'बी' से कम या बराबर है, तो पहले वर्ण को निकालें और अन्य वर्णों के लिए फ़ंक्शन को पुनरावर्ती रूप से कॉल करें।
  • यदि स्ट्रिंग 'बी' स्ट्रिंग 'बी' से कम या उसके बराबर है, तो पहले वर्ण को निकालें और अन्य वर्णों के लिए फ़ंक्शन को पुनरावर्ती रूप से कॉल करें।
  • सम्मिलित स्ट्रिंग लौटाएं।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
string concatenateLargest(string a, string b) {
   if (a.size() == 0 or b.size() == 0) {
      return (a + b);
   }
   if (a <= b)
      return b[0] + concatenateLargest(a, b.substr(1));
   else
      return a[0] + concatenateLargest(a.substr(1), b);
}
int main() {
   string a = "bacaa";
   string b = "abcaa";
   cout << concatenateLargest(a, b) << endl;
   return 0;
}

उपरोक्त कोड को चलाने से आउटपुट इस प्रकार उत्पन्न होगा,

आउटपुट

bacabcaaaa

दी गई समस्या के अनुसार विलय के बाद दो तार "बका" और "अबका" "बकाबका" बन जाएंगे।


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

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

  1. C++ में दो बाइनरी ट्री मर्ज करें

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

  1. सी ++ में स्ट्रिंग्स गुणा करें

    मान लीजिए कि हमारे पास एक स्ट्रिंग के रूप में दो संख्याएं हैं। हमें उन्हें गुणा करना है और परिणाम को भी एक स्ट्रिंग में वापस करना है। इसलिए यदि संख्याएं 26 और 12 हैं, तो परिणाम 312 होगा इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - दो तर्क x और y लेते हुए यह इंगित करता है कि x, y को विभाजित करता