स्ट्रिङ खोज एल्गोरिथ्म ठूलो पाठ(स्ट्रिङ) भित्र विशिष्ट ढाँचा(सबस्ट्रिङ) को घटनाहरू फेला पार्न प्रयोग गरिन्छ। यो एल्गोरिथ्मले पाठ प्रशोधन, खोजी, र हेरफेर कार्यहरूमा महत्त्वपूर्ण भूमिका खेल्छ।
यो कसरी काम गर्दछ
- खोजी गर्नको लागि पाठ(स्ट्रिङ) र ढाँचा(सबस्ट्रिङ) सँग सुरु गर्नुहोस्।
- पाठ मार्फत एक पटकमा एक वर्ण दोहोर्याउनुहोस्।
- पाठमा प्रत्येक क्यारेक्टरको लागि, यसलाई ढाँचाको पहिलो क्यारेक्टरसँग तुलना गर्नुहोस्।
- यदि त्यहाँ मिल्दोजुल्दो छ भने, त्यसपछिका क्यारेक्टरहरू पनि ढाँचासँग मेल खान्छ भने जाँच गर्नुहोस्।
- यदि ढाँचा पूर्ण रूपमा मेल खान्छ भने, म्याचको सुरूवात स्थिति रेकर्ड गर्नुहोस्।
- पाठमा ढाँचा खोज्न जारी राख्नुहोस्।
उदाहरण
एउटा पाठलाई विचार गर्नुहोस्: "ababcababcabcabc" र एउटा ढाँचा: "abc"
- स्थिति ० मा सुरु गर्नुहोस्। ढाँचामा पहिलो वर्ण "a" सँग "a" लाई तुलना गर्नुहोस्।
- मिल्दो भेटियो, अर्को वर्णहरूमा जानुहोस्: "b" सँग "b" र "c" सँग "a"।
- मिल्दो जारी राख्नुहोस्: "b" सँग "a", "a"b" सँग, र "b" सँग "c"।
- स्थिति २ मा खेल असफल भयो।
- स्थिति 3 मा फेरि सुरु गर्नुहोस्। ढाँचामा पहिलो वर्ण "a" सँग "a" लाई तुलना गर्नुहोस्।
- सफल मिलान: "a" सँग "a", "b" सँग "b", र "c" सँग "c"।
- रेकर्ड स्थिति 3।
ढाँचा "abc" स्थिति 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" को घटनाहरू फेला पार्न प्रकार्य प्रयोग गरिन्छ। नतिजा एक भेक्टर हुनेछ जसमा खेलहरूको सुरुवात स्थितिहरू छन्।