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

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

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

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

उदाहरण

मजकूर विचारात घ्या: "अल्गोरिदम कसे कार्य करते ते पाहण्यासाठी या मजकुरात सबस्ट्रिंग शोधूया."

आणि शोधण्यासाठी सबस्ट्रिंग: "सबस्ट्रिंग"

  1. स्थिती 0 पासून प्रारंभ करा. Let' "सबस्ट्रिंग" सह तुलना करा. जुळत नाही.
  2. स्थान 1 वर जा. et's "सबस्ट्रिंग" शी तुलना करा. जुळत नाही.
  3. स्थान 2 वर जा. t's "सबस्ट्रिंग" शी तुलना करा. जुळत नाही.
  4. स्थिती 3 वर जा. 's s "सबस्ट्रिंग" शी तुलना करा. जुळत नाही.
  5. स्थान 4 वर जा. se "सबस्ट्रिंग" सह तुलना करा. जुळत नाही.
  6. स्थिती 5 वर जा. sea "सबस्ट्रिंग" शी तुलना करा. जुळत नाही.
  7. स्थान 6 वर जा. earc "सबस्ट्रिंग" शी तुलना करा. जुळत नाही.
  8. स्थान 7 वर जा. arch "सबस्ट्रिंग" शी तुलना करा. जुळत नाही.
  9. स्थान 8 वर जा. rch "सबस्ट्रिंग" शी तुलना करा. जुळत नाही.
  10. स्थिती 9 वर जा. ch w "सबस्ट्रिंग" शी तुलना करा. जुळत नाही.
  11. स्थान 10 वर जा. h wi "सबस्ट्रिंग" सह तुलना करा. जुळत नाही.
  12. स्थान 11 वर जा. wit "सबस्ट्रिंग" शी तुलना करा. जुळत नाही.
  13. स्थान 12 वर जा. with "सबस्ट्रिंग" सह तुलना करा. जुळत नाही.
  14. स्थान 13 वर जा. ithi "सबस्ट्रिंग" सह तुलना करा. जुळत नाही.
  15. स्थान 14 वर जा. thin "सबस्ट्रिंग" सह तुलना करा. जुळत नाही.
  16. स्थान 15 वर जा. hinn "सबस्ट्रिंग" सह तुलना करा. जुळत नाही.
  17. स्थान 16 वर जा. in t "सबस्ट्रिंग" सह तुलना करा. जुळत नाही.
  18. स्थान 17 वर जा. n th "सबस्ट्रिंग" सह तुलना करा. जुळत नाही.
  19. स्थिती 18 वर जा. thi "सबस्ट्रिंग" शी तुलना करा. जुळत नाही.
  20. स्थिती 19 वर जा. this "सबस्ट्रिंग" सह तुलना करा. जुळत नाही.
  21. स्थान 20 वर जा. his "सबस्ट्रिंग" शी तुलना करा. जुळत नाही.
  22. स्थान 21 वर जा. is t "सबस्ट्रिंग" सह तुलना करा. जुळत नाही.
  23. स्थान 22 वर जा. s te  "सबस्ट्रिंग" सह तुलना करा. जुळत नाही.
  24. स्थान 23 वर जा. ubst  "सबस्ट्रिंग" सह तुलना करा. जुळत नाही.
  25. स्थान 24 वर जा. bstr "सबस्ट्रिंग" सह तुलना करा. जुळत नाही.
  26. स्थान 25 वर जा. stre "सबस्ट्रिंग" सह तुलना करा. जुळत नाही.
  27. स्थान 26 वर जा. trin  "सबस्ट्रिंग" शी तुलना करा. जुळत नाही.
  28. स्थान 27 वर जा. ring  "सबस्ट्रिंग" सह तुलना करा. सामना सापडला, रेकॉर्ड स्थिती 27.

सबस्ट्रिंग "सबस्ट्रिंग" मजकूरात 27 व्या स्थानावर आढळते.

C++ मधील उदाहरण कोड

#include <iostream>  
#include <string>  
#include <vector>  
  
std::vector<int> textSearch(const std::string& text, const std::string& query) {  
    std::vector<int> positions;  
  
    for(int i = 0; i <= text.length()- query.length(); ++i) {  
        int j = 0;  
        while(j < query.length() && text[i + j] == query[j]) {  
            ++j;  
        }  
        if(j == query.length()) {  
            positions.push_back(i);  
        }  
    }  
  
    return positions;  
}  
  
int main() {  
    std::string text = "Let's search for a substring within this text to see how the algorithm works.";  
    std::string query = "substring";  
  
    std::vector<int> result = textSearch(text, query);  
  
    std::cout << "Substring found at positions: ";  
    for(int pos: result) {  
        std::cout << pos << ";  
    }  
    std::cout << std::endl;  
  
    return 0;  
}  

या उदाहरणात, textSearch फंक्शनचा वापर मजकूरातील सबस्ट्रिंग "सबस्ट्रिंग" चे स्थान शोधण्यासाठी केला जातो. परिणाम एक वेक्टर असेल ज्यामध्ये सामन्यांची सुरुवातीची स्थिती असेल.