এই সমস্যায়, আমাদের ক্যামেলকেসে স্ট্রিংয়ের একটি অ্যারে এবং একটি প্যাটার্ন দেওয়া হয়েছে। আমাদের প্রদত্ত প্যাটার্নের সাথে মেলে এমন অ্যারের সমস্ত স্ট্রিং প্রিন্ট করতে হবে।
স্ট্রিং এর অ্যারে একটি অ্যারে যেখানে উপাদানগুলি স্ট্রিং ডেটা টাইপ।
ক্যামেলকেস প্রোগ্রামিং-এ নামকরণের একটি সাধারণ পদ্ধতি, এইভাবে নতুন শব্দের প্রথম অক্ষর বড় হাতের অক্ষর দিয়ে শুরু হয়, বাকি সবই ছোট হাতের।
উদাহরণ - iLoveProgramming
সমস্যা − প্রদত্ত প্যাটার্নের সাথে মেলে এমন সমস্ত স্ট্রিং খুঁজুন৷
৷উদাহরণ −
Input : “TutorialsPoint” , “ProgrammersPoint” , “ProgrammingLover” , “Tutorials”. Pattern : ‘P’ Output : “TutorialsPoint” , “ProgrammersPoint” , “ProgrammingLover”
ব্যাখ্যা − আমরা সেই সমস্ত স্ট্রিংগুলি বিবেচনা করেছি যেগুলির মধ্যে 'P' আছে।
এই সমস্যাটি সমাধান করার জন্য, আমরা একটি অভিধানের সমস্ত কী একটি গাছে যুক্ত করব এবং তারপরে বড় হাতের অক্ষরগুলি ব্যবহার করব। এবং গাছের মধ্যে শব্দগুলি প্রক্রিয়া করুন এবং প্যাটার্নের সাথে মেলে এমন সমস্ত প্রিন্ট করুন৷
৷উদাহরণ
#include <bits/stdc++.h> using namespace std; struct TreeNode{ TreeNode* children[26]; bool isLeaf; list<string> word; }; TreeNode* getNewTreeNode(void){ TreeNode* pNode = new TreeNode; if (pNode){ pNode->isLeaf = false; for (int i = 0; i < 26; i++) pNode->children[i] = NULL; } return pNode; } void insert(TreeNode* root, string word){ int index; TreeNode* pCrawl = root; for (int level = 0; level < word.length(); level++){ if (islower(word[level])) continue; index = int(word[level]) - 'A'; if (!pCrawl->children[index]) pCrawl->children[index] = getNewTreeNode(); pCrawl = pCrawl->children[index]; } pCrawl->isLeaf = true; (pCrawl->word).push_back(word); } void printAllWords(TreeNode* root){ if (root->isLeaf){ for(string str : root->word) cout << str << endl; } for (int i = 0; i < 26; i++){ TreeNode* child = root->children[i]; if (child) printAllWords(child); } } bool search(TreeNode* root, string pattern){ int index; TreeNode* pCrawl = root; for (int level = 0; level <pattern.length(); level++) { index = int(pattern[level]) - 'A'; if (!pCrawl->children[index]) return false; pCrawl = pCrawl->children[index]; } printAllWords(pCrawl); return true; } void findAllMatch(vector<string> dictionary, string pattern){ TreeNode* root = getNewTreeNode(); for (string word : dictionary) insert(root, word); if (!search(root, pattern)) cout << "No match found"; } int main(){ vector<string> dictionary = { "Tutorial" , "TP" , "TutorialsPoint" , "LearnersPoint", "TutorialsPointsPrograming" , "programmingTutorial"}; string pattern = "TP"; findAllMatch(dictionary, pattern); return 0; }
আউটপুট
TP TutorialsPoint TutorialsPointsPrograming