यह एक और स्ट्रिंग मिलान विधि है। इस दृष्टिकोण में, हम वैक्टर का उपयोग करके एक सबस्ट्रिंग की खोज कर रहे हैं।
सी ++ में हम मानक पुस्तकालय का उपयोग करके आसानी से वैक्टर बना सकते हैं। हम मुख्य स्ट्रिंग और स्ट्रिंग ले रहे हैं जिसे एक वेक्टर के रूप में खोजा जाएगा, फिर इसे मुख्य स्ट्रिंग में खोजा जाएगा। जब एक मैच मिलता है तो फ़ंक्शन पता देता है, और इसे मुख्य स्ट्रिंग से हटा देता है। तो अगले पुनरावृत्ति में, यह स्थान 0 से शुरू होता है और फिर से खोज करता है।
कई घटनाओं के लिए, हम लूप का उपयोग कर रहे हैं और बार-बार मैच की खोज कर रहे हैं, और स्थिति वापस कर रहे हैं।
Input: Main String: “ABAAABCDBBABCDDEBCABC”, Pattern “ABC” Output: Pattern found at position: 4 Pattern found at position: 10 Pattern found at position: 18
एल्गोरिदम
vector_pattern_search(main, substr)
इनपुट - मुख्य टेक्स्ट और सबस्ट्रिंग।
आउटपुट − वह स्थान जहां पैटर्न पाए जाते हैं
Begin p := starting point of the main string while r is not at the end of substr and p is not at the end of main, do r := starting of substr while item at position p & r are not same, and p in main, do p := p + 1 i := i + 1 done q := p while item at pos p & r are same, and r in substr and p in main, do p := p + 1 i := i + 1 r := r + 1 done if r exceeds the substr, then delete first occurrence of substr from main return the position where substr is found if p exceeds main string, then return 0 q := q + 1 p := q done End
उदाहरण कोड
#include <iostream> #include <string> #include <vector> using namespace std; void take_string(vector<char> &string){ char c; while(true){ c = getchar(); if(c == '\n'){ break; } string.push_back(c); } } void display(vector<char> string){ for(int i = 0; i<string.size(); i++){ cout << string[i]; } } int match_string(vector<char>& main, vector<char> substr){ vector<char>::iterator p,q, r; int i = 0; p = main.begin(); while (r <= substr.end() && p <= main.end()){ r = substr.begin(); while (*p != *r && p < main.end()){ p++; i++; } q = p; while (*p == *r && r <= substr.end() && p<=main.end()){ p++; i++; r++; } if (r >= substr.end()){ main.erase(main.begin(), q + 1); return (i - substr.size() + 1); } if (p >= main.end()) return 0; p = ++q; } }
आउटपुट
Enter main String: C++ is programming language. It is object oriented language Enter substring to find: language Match found at Position = 20 Match found at Position = 52