स्ट्रिंग खोज एल्गोरिदम का उपयोग बड़े पाठ(स्ट्रिंग) के भीतर एक विशिष्ट पैटर्न(सबस्ट्रिंग) की घटनाओं को खोजने के लिए किया जाता है। यह एल्गोरिदम टेक्स्ट प्रोसेसिंग, खोज और हेरफेर कार्यों में महत्वपूर्ण भूमिका निभाता है।
यह काम किस प्रकार करता है
- खोजने के लिए एक टेक्स्ट(स्ट्रिंग) और एक पैटर्न(सबस्ट्रिंग) से शुरुआत करें।
- पाठ में एक समय में एक वर्ण को दोहराएँ।
- पाठ में प्रत्येक वर्ण के लिए, इसकी तुलना पैटर्न के पहले वर्ण से करें।
- यदि कोई मेल है, तो जांचें कि क्या बाद के अक्षर भी पैटर्न से मेल खाते हैं।
- यदि पैटर्न पूरी तरह मेल खाता है, तो मिलान की प्रारंभिक स्थिति रिकॉर्ड करें।
- पाठ में पैटर्न खोजना जारी रखें.
उदाहरण
एक पाठ पर विचार करें: "ababcababcabcabc" और एक पैटर्न: "abc"
- स्थिति 0 से प्रारंभ करें। पैटर्न में पहले अक्षर "ए" के साथ "ए" की तुलना करें।
- मिलान मिला, अगले वर्णों पर जाएँ: "बी" के साथ "बी", और "ए" के साथ "सी"।
- मिलान जारी रखें: "बी" के साथ "ए", "ए" के साथ "बी", और "बी" के साथ "सी"।
- स्थान 2 पर मैच विफल रहा।
- स्थिति 3 से फिर से शुरू करें। पैटर्न में पहले अक्षर "ए" के साथ "ए" की तुलना करें।
- सफल मिलान: "ए" के साथ "ए", "बी" के साथ "बी", और "सी" के साथ "सी"।
- रिकार्ड स्थिति 3.
पैटर्न "एबीसी" 0, 6 और 9 स्थिति पर पाया जाता है।
C++ में उदाहरण कोड
#include <iostream>
#include <string>
#include <vector>
std::vector<int> stringSearch(const std::string& text, const std::string& pattern) {
std::vector<int> positions;
for(int i = 0; i <= text.length()- pattern.length(); ++i) {
int j = 0;
while(j < pattern.length() && text[i + j] == pattern[j]) {
++j;
}
if(j == pattern.length()) {
positions.push_back(i);
}
}
return positions;
}
int main() {
std::string text = "ababcababcabcabc";
std::string pattern = "abc";
std::vector<int> result = stringSearch(text, pattern);
std::cout << "Pattern found at positions: ";
for(int pos: result) {
std::cout << pos << ";
}
std::cout << std::endl;
return 0;
}
इस उदाहरण में, stringSearch
फ़ंक्शन का उपयोग "ababcababcabcabc" टेक्स्ट के भीतर "abc" पैटर्न की घटनाओं को खोजने के लिए किया जाता है। परिणाम एक वेक्टर होगा जिसमें मैचों की शुरुआती स्थिति शामिल होगी।