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

यह जांचने के लिए प्रोग्राम कि दिए गए शब्द दिए गए पैटर्न को बनाए रख रहे हैं या नहीं C++

मान लीजिए कि हमारे पास एक पैटर्न p और एक स्ट्रिंग str है, हमें यह जांचना है कि str समान पैटर्न का अनुसरण करता है या नहीं। यहां फॉलो का मतलब है कि पैटर्न में एक अक्षर और str में एक गैर-रिक्त शब्द के बीच एक आपत्ति है।

इसलिए, यदि इनपुट पैटर्न ="सीबीबीसी", str ="शब्द पैटर्न पैटर्न शब्द" जैसा है, तो आउटपुट सही होगा।

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

  • strcin :=str

  • सरणी शब्दों को परिभाषित करें

  • strcin में प्रत्येक शब्द के लिए

    • शब्दों के अंत में शब्द डालें

  • एक मानचित्र p2i परिभाषित करें

  • मैं :=0

  • पैट :=खाली स्ट्रिंग

  • सी पैटर्न के लिए -

    • यदि c, p2i का सदस्य नहीं है, तो -

      • (i 1 से बढ़ाएँ)

      • p2i[c] :=i

    • पैट :=पैट concatenate p2i[c]

  • एक नक्शा परिभाषित करें str2i

  • मैं :=0

  • pat1 :=रिक्त स्ट्रिंग

  • शब्दों में c के लिए -

    • अगर c str2i का सदस्य नहीं है, तो -

      • (i 1 से बढ़ाएँ)

      • str2i[c] :=i

    • pat1 :=pat1 str2i को संयोजित करें [c]

  • जब पैट1 पैट के समान हो तो सही लौटें

उदाहरण

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

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   bool wordPattern( string pattern, string str ) {
      istringstream strcin(str);
      string word;
      vector<string> words;
      while (strcin >> word)
         words.push_back(word);
      unordered_map<char, int> p2i;
      int i = 0;
      string pat = "";
      for (auto c : pattern) {
         if (p2i.count(c) == 0) {
            i++;
            p2i[c] = i;
         }
         pat += to_string(p2i[c]);
      }
      unordered_map str2i;
      i = 0;
      string pat1 = "";
      for (auto c : words) {
         if (str2i.count(c) == 0) {
            i++;
            str2i[c] = i;
         }
         pat1 += to_string(str2i[c]);
      }
      return pat1 == pat;
   }
};
main(){
   Solution ob;
   cout << (ob.wordPattern("cbbc", "word pattern pattern word"));
}

इनपुट

"cbbc", "word pattern pattern word"

आउटपुट

1

  1. यह जांचने के लिए प्रोग्राम कि कोई पेड़ ऊंचाई संतुलित है या नहीं C++

    मान लीजिए हमारे पास एक बाइनरी ट्री है; हमें जांचना है कि इसकी ऊंचाई संतुलित है या नहीं। हम जानते हैं कि एक संतुलित ऊंचाई वाले पेड़ के लिए, पेड़ में प्रत्येक नोड के लिए, इसके बाएं उपट्री की ऊंचाई और इसके दाएं उपट्री की ऊंचाई का पूर्ण अंतर 0 या 1 है। तो, अगर इनपुट पसंद है तो आउटपुट सही होगा इसे ह

  1. सी ++ प्रोग्राम यह जांचने के लिए कि क्या 3-डी विमान में बिंदु कोपलानर हैं

    दिए गए बिंदुओं (x1, y1, z1), (x2, y2, z2), (x3, y3, z3) और (x4, y4, z4) और प्रोग्राम को यह जांचना चाहिए कि दिए गए बिंदु समतल हैं या नहीं। पॉइंट्स को कोप्लानर कहा जाता है, क्या वे एक ही प्लेन के नीचे होते हैं और अगर वे अलग-अलग -2 प्लेन के नीचे होते हैं तो पॉइंट्स कॉप्लानर नहीं होते हैं। नीचे चार बिं

  1. C++ प्रोग्राम यह जांचने के लिए कि कोई ग्राफ़ मजबूती से जुड़ा है या नहीं

    निर्देशित ग्राफ़ में घटकों को दृढ़ता से जुड़ा हुआ कहा जाता है, जब एक घटक में प्रत्येक जोड़ी के बीच एक पथ होता है। इस एल्गोरिथम को हल करने के लिए, सबसे पहले, प्रत्येक शीर्ष का अंतिम समय प्राप्त करने के लिए DFS एल्गोरिथ्म का उपयोग किया जाता है, अब ट्रांसपोज़्ड ग्राफ़ का अंतिम समय ज्ञात करें, फिर शी