C++ मधील स्ट्रिंग शोध (String Search) अल्गोरिदम- स्पष्टीकरण, उदाहरण आणि कोड

स्ट्रिंग शोध अल्गोरिदम मोठ्या मजकुरात(स्ट्रिंग) विशिष्ट पॅटर्न(सबस्ट्रिंग) च्या घटना शोधण्यासाठी वापरला जातो. हे अल्गोरिदम मजकूर प्रक्रिया, शोध आणि हाताळणी कार्यांमध्ये महत्त्वपूर्ण भूमिका बजावते.

हे कसे कार्य करते

  1. शोधण्यासाठी मजकूर(स्ट्रिंग) आणि नमुना(सबस्ट्रिंग) सह प्रारंभ करा.
  2. मजकुरातून एका वेळी एक वर्ण पुनरावृत्ती करा.
  3. मजकूरातील प्रत्येक वर्णासाठी, पॅटर्नच्या पहिल्या वर्णाशी त्याची तुलना करा.
  4. जुळत असल्यास, त्यानंतरचे वर्ण देखील पॅटर्नशी जुळतात का ते तपासा.
  5. जर नमुना पूर्णपणे जुळला असेल, तर सामन्याची सुरुवातीची स्थिती रेकॉर्ड करा.
  6. मजकूरातील नमुना शोधणे सुरू ठेवा.

उदाहरण

मजकूर विचारात घ्या: "ababcababcabcabc" आणि एक नमुना: "abc"

  1. स्थिती 0 पासून प्रारंभ करा. पॅटर्नमधील पहिल्या वर्ण "a" शी "a" ची तुलना करा.
  2. जुळणी आढळली, पुढील वर्णांवर जा: "b" सह "b", आणि "a" सह "c".
  3. जुळणे सुरू ठेवा: "a" सह "b", "b" सह "a" आणि "c" सह "b"
  4. 2 क्रमांकावर सामना अयशस्वी झाला.
  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 फंक्शनचा वापर "abcbabcabcabc" मजकुरामध्ये "abc" पॅटर्नच्या घटना शोधण्यासाठी केला जातो. परिणाम एक वेक्टर असेल ज्यामध्ये सामन्यांची सुरुवातीची स्थिती असेल.