কম্পিউটার

C++ এ CamelCase নোটেশন ডিকশনারিতে একটি প্যাটার্নের সাথে মিলে যাওয়া সমস্ত শব্দ প্রিন্ট করুন


এই সমস্যায়, আমাদের ক্যামেলকেসে স্ট্রিংয়ের একটি অ্যারে এবং একটি প্যাটার্ন দেওয়া হয়েছে। আমাদের প্রদত্ত প্যাটার্নের সাথে মেলে এমন অ্যারের সমস্ত স্ট্রিং প্রিন্ট করতে হবে।

স্ট্রিং এর অ্যারে একটি অ্যারে যেখানে উপাদানগুলি স্ট্রিং ডেটা টাইপ।

ক্যামেলকেস প্রোগ্রামিং-এ নামকরণের একটি সাধারণ পদ্ধতি, এইভাবে নতুন শব্দের প্রথম অক্ষর বড় হাতের অক্ষর দিয়ে শুরু হয়, বাকি সবই ছোট হাতের।

উদাহরণ - 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

  1. C++ এ বন্ধনী আকারে একটি স্ট্রিং ভাঙ্গার সমস্ত উপায় প্রিন্ট করুন

  2. C++ এ CamelCase নোটেশন ডিকশনারিতে একটি প্যাটার্নের সাথে মিলে যাওয়া সমস্ত শব্দ প্রিন্ট করুন

  3. একটি প্রদত্ত স্ট্রিং এর সমস্ত সাবস্ট্রিং C++ এ প্রিন্ট করার জন্য প্রোগ্রাম

  4. C++ এ একটি অভিধানে নির্দিষ্ট প্যাটার্নের সাথে মেলে এমন সমস্ত স্ট্রিং খুঁজুন