কম্পিউটার

C++ এ ওয়ার্ড প্যাটার্ন


ধরুন আমাদের একটি প্যাটার্ন এবং একটি স্ট্রিং str আছে, str একই প্যাটার্ন অনুসরণ করে কিনা তা খুঁজে বের করুন। এখানে অনুসরণ মানে প্যাটার্নে একটি অক্ষর এবং স্ট্র-এ একটি অ-খালি শব্দের মধ্যে একটি দ্বিখণ্ডন রয়েছে।

সুতরাং, যদি ইনপুট প্যাটার্ন ="cbbc", str ="শব্দ প্যাটার্ন প্যাটার্ন শব্দ" এর মত হয়, তাহলে আউটপুট হবে True।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • strcin :=str

  • শব্দের একটি বিন্যাস সংজ্ঞায়িত করুন

  • strcin

    -এর প্রতিটি শব্দের জন্য
    • শব্দের শেষে শব্দ ঢোকান

  • একটি মানচিত্র p2i

    সংজ্ঞায়িত করুন
  • i :=0

  • pat :=খালি স্ট্রিং

  • প্যাটার্নে c-

    এর জন্য
    • যদি c p2i এর সদস্য না হয়, তাহলে −

      • (i 1 দ্বারা বাড়ান)

      • p2i[c] :=i

    • pat :=pat concatenate p2i[c]

  • একটি মানচিত্র str2i

    সংজ্ঞায়িত করুন
  • i :=0

  • pat1 :=ফাঁকা স্ট্রিং

  • শব্দে c এর জন্য -

    • যদি c str2i এর সদস্য না হয়, তাহলে −

      • (i 1 দ্বারা বাড়ান)

      • str2i[c] :=i

    • pat1 :=pat1 concatenate str2i[c]

  • প্রত্যাবর্তন true যখন pat1 pat এর মত হয়

উদাহরণ

আরো ভালোভাবে বোঝার জন্য নিচের বাস্তবায়নটি দেখি -

#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<string, int> 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++-এ সংক্ষিপ্ততম শব্দ দূরত্ব II

  2. C++ এ বিকে ট্রি পরিচিতি

  3. C++ এ কম্পোজিট ডিজাইন প্যাটার্ন

  4. C++ সিঙ্গেলটন ডিজাইন প্যাটার্ন ব্যাখ্যা কর।