इस समस्या में, हमें ऊंट के मामले में स्ट्रिंग की एक सरणी और एक पैटर्न दिया गया है। हमें सरणी के उन सभी स्ट्रिंग को प्रिंट करना है जो दिए गए पैटर्न से मेल खाते हैं।
स्ट्रिंग की सरणी एक सरणी है जिसमें तत्व स्ट्रिंग डेटा प्रकार के होते हैं।
कैमलकेस प्रोग्रामिंग में नामकरण का एक सामान्य तरीका है, इस तरह नए शब्द का पहला अक्षर अपरकेस से शुरू होता है, बाकी सभी लोअर केस हैं।
उदाहरण - 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