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

स्ट्रिंग्स की संख्या जो प्रत्येक वर्ण का उपयोग करके एक और स्ट्रिंग से बनाई जा सकती है-सी ++ में अधिकतम एक बार

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

इनपुट − str_1 ="तकनीकी शिक्षा", str_2 ="सीखना"

आउटपुट - प्रत्येक वर्ण का अधिकतम एक बार उपयोग करके किसी अन्य स्ट्रिंग से बनने वाली स्ट्रिंग्स की संख्या हैं - 1

स्पष्टीकरण - जैसा कि हम देख सकते हैं कि str_2 str_1 में ठीक एक बार होता है। तो, str_2 में str_1 की संख्या 1 है।

इनपुट − str_1 ="एलोहसेहेलोएबकोएल्हल, str_2 ="हैलो"

आउटपुट - प्रत्येक वर्ण का अधिकतम एक बार उपयोग करके किसी अन्य स्ट्रिंग से बनने वाली स्ट्रिंग्स की संख्या हैं - 3

स्पष्टीकरण - जैसा कि हम देख सकते हैं कि str_2 hello है, इसलिए हम ठीक एक बार str_1 के वर्णों का उपयोग करके hello शब्द के निर्माण की जांच करेंगे। जैसा कि हम देख सकते हैं, str_1 में hello शब्द के 3 रूप हैं इसलिए गिनती 3 है।

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

  • स्ट्रिंग str_1 और str_2 इनपुट करें और उनकी संगत लंबाई की गणना करें और आगे की प्रक्रिया के लिए डेटा को फ़ंक्शन में पास करें।

  • str_2 की गिनती को str_1 में संग्रहीत करने के लिए एक अस्थायी चर गणना घोषित करें और इसे INT_MAX के साथ प्रारंभ करें। INT_MAX का उपयोग C++ में एक वैरिएबल के अधिकतम मान को निर्दिष्ट करने के लिए किया जाता है और INT_MAX का मान +2147483647 है।

  • आकार 26 की एक सरणी बनाएं क्योंकि हमारे पास अंग्रेजी में 26 अक्षर हैं और इसे 0 से शुरू करते हैं।

  • 0 से स्ट्रिंग str_1 की लंबाई तक के लिए लूप प्रारंभ करें और arr[str_1[i] - 'a'] 1

    सेट करें
  • 0 से स्ट्रिंग की लंबाई तक एक और लूप शुरू करें str_2 और गिनती को न्यूनतम गिनती या गिरफ्तारी के रूप में सेट करें [str_2[i] - 'a']।

  • वापसी की संख्या

  • परिणाम प्रिंट करें।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
int atmost_once(string str_1, int len_str1, string str_2, int len_str2){
   int count = INT_MAX;
   int arr[26] = { 0 };
   for (int i = 0; i < len_str1 ; i++){
      arr[str_1[i] - 'a'] += 1;
   }
   for (int i = 0; i < len_str2; i++){
      count = min(count, arr[str_2[i] - 'a']);
   }
   return count;
}
int main(){
   string str_1 = "technical learning";
   int length_str1 = str_1.length();
   string str_2 = "learning";
   int length_str2 = str_2.length();
   cout<<"Count of strings that can be formed from another string using each character at-most
once are: "<<atmost_once(str_1,length_str1, str_2, length_str2);
   return 0;
}

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -

Count of strings that can be formed from another string using each character at-most once are: 1

  1. पता लगाएँ कि C++ में उनकी संयोजकता संख्याओं का उपयोग करके 3 परमाणुओं से एक अणु का निर्माण किया जा सकता है या नहीं

    जैसा कि हम जानते हैं कि वैलेंस नंबर वह संख्या है जो परिभाषित करती है कि परमाणु को अन्य परमाणुओं के साथ कितने बंधन बनाने चाहिए। हमारे पास तीन परमाणुओं की संयोजकता संख्या है। हमें यह जांचना होगा कि वे एक अणु बना सकते हैं या नहीं। परमाणु एक दूसरे के साथ कई बंधन बना सकते हैं। अतः यदि संयोजकता संख्याएँ 2

  1. C++ का उपयोग करके एक स्ट्रिंग में एक अतिरिक्त वर्ण खोजें।

    मान लीजिए कि हमारे पास दो तार S और T हैं, S की लंबाई n है, और T की लंबाई n + 1 है। T उन सभी वर्णों को धारण करेगा जो S में मौजूद हैं, लेकिन इसमें एक अतिरिक्त वर्ण होगा। हमारा काम कुछ कुशल दृष्टिकोण का उपयोग करके अतिरिक्त चरित्र को खोजना है। इस समस्या को हल करने के लिए, हम एक खाली हैश तालिका लेंगे, औ

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

    मान लीजिए कि हमारे पास दो स्ट्रिंग्स लोअरकेस स्ट्रिंग्स s और t हैं। हमें यह जांचना होगा कि निम्नलिखित बाधाओं का उपयोग करके s से t उत्पन्न किया जा सकता है या नहीं - उदाहरण के लिए t के वर्ण s में हैं यदि t में दो a हैं, तो s में भी दो a होने चाहिए। जब t में कोई वर्ण s में नहीं है, तो जाँच करें क