C++ मा स्ट्रिङ खोज (String Search) एल्गोरिदम- व्याख्या, उदाहरण र कोड

स्ट्रिङ खोज एल्गोरिथ्म ठूलो पाठ(स्ट्रिङ) भित्र विशिष्ट ढाँचा(सबस्ट्रिङ) को घटनाहरू फेला पार्न प्रयोग गरिन्छ। यो एल्गोरिथ्मले पाठ प्रशोधन, खोजी, र हेरफेर कार्यहरूमा महत्त्वपूर्ण भूमिका खेल्छ।

यो कसरी काम गर्दछ

  1. खोजी गर्नको लागि पाठ(स्ट्रिङ) र ढाँचा(सबस्ट्रिङ) सँग सुरु गर्नुहोस्।
  2. पाठ मार्फत एक पटकमा एक वर्ण दोहोर्याउनुहोस्।
  3. पाठमा प्रत्येक क्यारेक्टरको लागि, यसलाई ढाँचाको पहिलो क्यारेक्टरसँग तुलना गर्नुहोस्।
  4. यदि त्यहाँ मिल्दोजुल्दो छ भने, त्यसपछिका क्यारेक्टरहरू पनि ढाँचासँग मेल खान्छ भने जाँच गर्नुहोस्।
  5. यदि ढाँचा पूर्ण रूपमा मेल खान्छ भने, म्याचको सुरूवात स्थिति रेकर्ड गर्नुहोस्।
  6. पाठमा ढाँचा खोज्न जारी राख्नुहोस्।

उदाहरण

एउटा पाठलाई विचार गर्नुहोस्: "ababcababcabcabc" र एउटा ढाँचा: "abc"

  1. स्थिति ० मा सुरु गर्नुहोस्। ढाँचामा पहिलो वर्ण "a" सँग "a" लाई तुलना गर्नुहोस्।
  2. मिल्दो भेटियो, अर्को वर्णहरूमा जानुहोस्: "b" सँग "b" र "c" सँग "a"।
  3. मिल्दो जारी राख्नुहोस्: "b" सँग "a", "a"b" सँग, र "b" सँग "c"।
  4. स्थिति २ मा खेल असफल भयो।
  5. स्थिति 3 मा फेरि सुरु गर्नुहोस्। ढाँचामा पहिलो वर्ण "a" सँग "a" लाई तुलना गर्नुहोस्।
  6. सफल मिलान: "a" सँग "a", "b" सँग "b", र "c" सँग "c"।
  7. रेकर्ड स्थिति 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" को घटनाहरू फेला पार्न प्रकार्य प्रयोग गरिन्छ। नतिजा एक भेक्टर हुनेछ जसमा खेलहरूको सुरुवात स्थितिहरू छन्।