কম্পিউটার টিউটোরিয়াল

C++-এ ওয়ার্ড প্যাটার্ন (Word Pattern)


একটি প্যাটার্ন এবং একটি স্ট্রিং str দেওয়া আছে। str প্যাটার্নটি ফলো করে কিনা তা চেক করুন। ফলো মানে প্যাটার্নের প্রতিটি অক্ষর এবং str-এর প্রতিটি শব্দের মধ্যে বাইজেকশন (এক-এক মিল) থাকবে।

উদাহরণ: pattern = "cbbc", str = "word pattern pattern word" -> true।

সমাধানের ধাপসমূহ

  • str-কে শব্দে ভাগ করুন (words অ্যারে)।
  • প্যাটার্নের অক্ষরগুলোর ইনডেক্স ম্যাপ p2i বানান, প্যাটার্ন স্ট্রিং pat তৈরি করুন।
  • শব্দগুলোর ইনডেক্স ম্যাপ str2i বানান, প্যাটার্ন স্ট্রিং pat1 তৈরি করুন।
  • pat == pat1 হলে true রিটার্ন করুন।

C++ কোড উদাহরণ

#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;
    }
};

int main() {
    Solution ob;
    cout << ob.wordPattern("cbbc", "word pattern pattern word");
    return 0;
}

ইনপুট

"cbbc", "word pattern pattern word"

আউটপুট

1
  1. C++-এ শর্টেস্ট ওয়ার্ড ডিস্ট্যান্স II

  2. C++-এ BK ট্রি পরিচিতি

  3. C++-এ কম্পোজিট ডিজাইন প্যাটার্ন (Composite Design Pattern)

  4. C++ সিঙ্গলটন (Singleton) ডিজাইন প্যাটার্ন ব্যাখ্যা