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

C++ में दिए गए सभी वाक्यों में मौजूद शब्दों की संख्या

हमें स्ट्रिंग्स के रूप में कई वाक्य दिए गए हैं। लक्ष्य सभी वाक्यों में मौजूद शब्दों की संख्या गिनना है।

नोट − सभी लोअरकेस अक्षरों वाले शब्दों पर ही विचार किया जाएगा

अगर वाक्य हैं -

“मैं C भाषा सीख रहा हूँ”

“नई चीजें सीखना आसान है”

"बच्चे स्वस्थ आदतें सीख रहे हैं"

तीनों में केवल "सीखना" मौजूद है। तो गिनती 1 है।

आइए उदाहरणों के साथ समझते हैं

इनपुट - "कपड़े सूखे थे", "सभी बच्चे खेल रहे थे", "वे सबसे अच्छे दिन थे"

आउटपुट − दिए गए सभी वाक्यों में मौजूद शब्दों की संख्या है − 2

स्पष्टीकरण − शब्द "द" और "थे" सभी वाक्यों में मौजूद हैं।

इनपुट - "हम स्कूल जा रहे हैं", "अगर आप चाहते हैं तो जारी रखें", "ये सब बिक चुके हैं"

आउटपुट - दिए गए सभी वाक्यों में मौजूद शब्दों की संख्या है - 1

स्पष्टीकरण - शब्द "हैं" सभी वाक्यों में मौजूद है।

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

इस दृष्टिकोण में हम सबसे पहले पहले वाक्य के शब्दों को vector> set.

में स्टोर करेंगे।

हम unordered_map चेक का उपयोग करके अन्य सभी वाक्यों में वेक्टर सेट में शब्द पाएंगे।

  • एक वेक्टर <स्ट्रिंग> vec लें। और वाक्यों वाले सभी स्ट्रिंग्स के साथ इसे इनिशियलाइज़ करें।

  • वाक्यों की संख्या vec.size() होगी।

  • फंक्शन word_sentences(vector vec, int size) वाक्यों और आकार का वेक्टर लेता है और सभी दिए गए वाक्यों में मौजूद शब्दों की गिनती देता है

  • प्रारंभिक गणना 0 के रूप में लें।

  • एक वाक्य में अलग-अलग शब्दों को संग्रहीत करने के लिए अस्थायी स्ट्रिंग str लें।

  • लूप के दौरान vec[0] में संग्रहीत पहला वाक्य ट्रैवर्स करें।

  • इसके अंदर एक और लूप लूप का उपयोग करते हुए, एक अलग शब्द को str[] में तब तक निकालें जब तक कि स्पेस का सामना न हो जाए।

  • अब जबकि हमारे पास पहले वाक्य का एक शब्द है str, सेट में (str,true) की एक जोड़ी जोड़ें।

  • vec[0] में संग्रहीत वाक्य के सभी शब्दों के लिए ऐसा करें।

  • वेक्टर सेट में अब पहले वाक्य के सभी शब्दों के जोड़े सही मान के साथ हैं।

  • j=1 से j

  • वर्तमान वाक्य से प्रत्येक शब्द को vec[j] में निकालें और str में स्टोर करें।

  • चेक[str]=true का उपयोग करके इन शब्दों को मानचित्र जाँच में सत्य के रूप में चिह्नित करें।

  • vec[j] में वर्तमान वाक्य के सभी शब्दों के लिए ऐसा करें।

  • लूप के लिए, ट्रैवर्स वेक्टर सेट और वर्तमान वाक्य के लिए उपयोग करके पता करें कि क्या ये शब्द चेक में भी सेट में हैं।

  • लूप के लिए उपयोग करते हुए, ट्रैवर्स वेक्टर फिर से सेट करें।

  • यदि वर्तमान शब्द सभी वाक्यों में प्रकट होता है तो सेट [के]। दूसरा सत्य होगा। यदि हाँ, तो वेतन वृद्धि की गणना करें।

  • अंत में हमारे पास सभी वाक्यों में आने वाले शब्दों के साथ परिवर्तनीय गणना होगी।

  • परिणाम के रूप में वापसी की गिनती।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
int words_sentences(vector<string> vec, int size){
   int count = 0;
   int i = 0;
   string str;
   unordered_map<string, bool> check;
   vector<pair<string, bool>> set ;
   pair<string, bool> str_bool;
   while (i < vec[0].size()){
      str = "";
      while (i < vec[0].size() && vec[0][i] != ' '){
         str += vec[0][i];
         i++;
      }
      i++;
      if (str != ""){
         str_bool = make_pair(str, true);
         set.push_back(str_bool);
      }
   }
   for (int j = 1; j < size; j++){
      check.clear();
      i = 0;
      while (i < vec[j].size()){
         str = "";
         while (i < vec[j].size() && vec[j][i] != ' '){
            str += vec[j][i];
            i++;
         }
         i++;
         if (str != ""){
            check[str] = true;
         }
      }
      for(int k = 0; k < set.size(); k++){
         if (set[k].second != false && check[set[k].first] == false){
            set[k].second = false;
         }
         else if (set[k].second != false && check[set[k].first] == true){
            check[set[k].first] = false;
         }
      }
   }
   for (int k = 0; k < set.size(); k++){
      if (set[k].second == true){
         count++;
      }
   }
   return count;
}
int main(){
   vector<string> vec;
   vec.push_back("Honesty is the best policy");
   vec.push_back("policy varies from company to company");
   vec.push_back("Employee should follow the policy of a company");
   int size = vec.size();
   cout<<"Count of words that are present in all the given sentences are: "<<words_sentences(vec, size);
   return 0;
}

आउटपुट

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

Count of words that are present in all the given sentences are: 1

  1. C++ में कैरेक्टर ऑफ़ ऐरे का उपयोग करके सभी मान्य शब्दों को प्रिंट करें

    इस समस्या के कारण, हमें शब्दों का एक सेट और वर्णों की एक सरणी दी गई है और हमें यह जांचना है कि क्या सरणी के वर्णों का उपयोग करके शब्द संभव हैं। आइए समस्या को बेहतर ढंग से समझने के लिए एक उदाहरण लेते हैं - Input : words[] : {‘go’ , ‘hi’ , ‘run’ , ‘on’

  1. एक श्रेणी खोजें जो C++ में दिए गए N श्रेणी के सभी तत्वों को शामिल करती है

    मान लीजिए कि हमारे पास n रेंज हैं जिनमें L और R हैं। हमें 0 के इंडेक्स को जांचना या खोजना है - उस रेंज के आधार पर जो अन्य सभी n - 1 रेंज को कवर करता है। यदि ऐसी कोई सीमा नहीं है, तो -1 प्रदर्शित करें। उदाहरण के लिए, यदि एल =[2, 4, 3, 1], और आर =[4, 6, 7, 9], तो आउटपुट 3 है। तो इसका मतलब है कि तीसरे

  1. C++ . में दिए गए स्ट्रिंग में "1(0+)1" के सभी पैटर्न खोजें

    मान लीजिए कि एक स्ट्रिंग में 1(0+)1 जैसे पैटर्न हैं। जहां (0+) 1s की गैर-रिक्त लगातार घटनाओं को इंगित करता है। हमें सभी पैटर्न खोजने होंगे। पैटर्न ओवरलैप कर सकते हैं। स्ट्रिंग जरूरी नहीं कि एक बाइनरी स्ट्रिंग हो। यह केवल अंक और लोअरकेस वर्ण धारण कर सकता है। मान लीजिए कि स्ट्रिंग 1101001 की तरह है, त