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

सी ++ में मिलान करने वाले बाद की संख्या

मान लीजिए कि हमारे पास एक स्ट्रिंग एस और शब्दों का एक शब्दकोष है, शब्दों की संख्या ज्ञात करें [i] जो एस के बाद है। इसलिए यदि इनपुट एस ="एबीसीडीई" है और शब्दकोश ["ए", "बीबी" है, "एसीडी", "एसी"], तो आउटपुट 3 होगा। क्योंकि शब्दकोश में शब्दों के तीन अनुक्रम हैं, जो एस के बाद हैं:"ए" "एसीडी" और "ऐस"

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • n :=शब्द सरणी का आकार
  • एक नक्शा बनाएं मी
  • i के लिए 0 से लेकर शब्दों के आकार तक
    • मानचित्र में शब्द[i] डालें m[words[i, 0]] स्थिति
  • उत्तर:=0
  • i के लिए 0 से S के आकार के बीच
    • चार x :=एस[i]
    • यदि x मानचित्र m में मौजूद है, तो
      • अस्थायी:=m[x], और m[x] हटाएं
      • जे के लिए 0 से अस्थायी आकार में
        • यदि अस्थायी का आकार [j] =1 है, तो ans को 1 से बढ़ाएँ, अन्यथा अस्थायी [j] के सबस्ट्रिंग को सूचकांक 1 से m[temp[j, 1]] में डालें।
  • वापसी उत्तर

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

उदाहरण

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int numMatchingSubseq(string S, vector<string>& words) {
      int n = words.size();
      map <char, vector <string> > m;
      for(int i = 0; i < words.size(); i++){
         m[words[i][0]].push_back(words[i]);
      }
      int ans = 0;
      for(int i = 0; i < S.size(); i++){
         char x = S[i];
         if(m.find(x) != m.end()){
            vector <string> temp = m[x];
            m.erase(x);
            for(int j = 0; j < temp.size(); j++){
               if(temp[j].size() == 1){
                  ans++;
               } else {
                  m[temp[j][1]].push_back(temp[j].substr(1));
               }
            }
         }
      }
      return ans;
   }
};
int main() {
   Solution ob1;
   string s = "abcde";
   vector<string> v{"a","bb","acd","ace"};
   cout << ob1.numMatchingSubseq(s, v) << endl;
   return 0;
}

इनपुट

"abcde"
["a","bb","acd","ace"]
string s = "abcde";
vector<string> v{"a","bb","acd","ace"};

आउटपुट

3

  1. सी ++ प्रोग्राम डोडेकैगन की संख्या गिनने के लिए जिसे हम आकार डी बना सकते हैं

    मान लीजिए कि हमारे पास एक संख्या d है। विचार करें कि अनंत संख्या में वर्गाकार टाइलें हैं और भुजाओं की लंबाई के साथ नियमित त्रिकोणीय टाइलें हैं। हमें यह पता लगाना है कि इन टाइलों का उपयोग करके हम कितने तरीकों से नियमित डोडेकागन (12-पक्षीय बहुभुज) बना सकते हैं। यदि उत्तर बहुत बड़ा है, तो परिणाम मोड 99

  1. C++ में मितव्ययी संख्या

    इस समस्या में, हमें एक धनात्मक पूर्णांक N दिया जाता है। हमारा कार्य यह जाँचने के लिए एक प्रोग्राम बनाना है कि दी गई संख्या मितव्ययी संख्या है या नहीं। मितव्ययी संख्या - एक संख्या जिसके अंकों की संख्या दी गई संख्या के अभाज्य गुणनखंड में अंकों की संख्या से अधिक है। उदाहरण − 625, संख्या 625 का अभाज्

  1. सी++ पेंटाटोप नंबर

    पास्कल के त्रिभुज में एक पंचकोण संख्या को पाँचवीं संख्या के रूप में वर्णित किया गया है। अब, जैसा कि आप जानते हैं, यह पांचवीं संख्या है, तो इसका मतलब है कि हमारे पास पास्कल के त्रिकोण में कम से कम पांच संख्याएं होनी चाहिए, इसलिए इस श्रृंखला की पहली संख्या 1 4 6 4 1 से शुरू होती है। पास्कल त्रिभुज की