स्ट्रिंग शोध अल्गोरिदम मोठ्या मजकुरात(स्ट्रिंग) विशिष्ट पॅटर्न(सबस्ट्रिंग) च्या घटना शोधण्यासाठी वापरला जातो. हे अल्गोरिदम मजकूर प्रक्रिया, शोध आणि हाताळणी कार्यांमध्ये महत्त्वपूर्ण भूमिका बजावते.
हे कसे कार्य करते
- शोधण्यासाठी मजकूर(स्ट्रिंग) आणि नमुना(सबस्ट्रिंग) सह प्रारंभ करा.
- मजकुरातून एका वेळी एक वर्ण पुनरावृत्ती करा.
- मजकूरातील प्रत्येक वर्णासाठी, पॅटर्नच्या पहिल्या वर्णाशी त्याची तुलना करा.
- जुळत असल्यास, त्यानंतरचे वर्ण देखील पॅटर्नशी जुळतात का ते तपासा.
- जर नमुना पूर्णपणे जुळला असेल, तर सामन्याची सुरुवातीची स्थिती रेकॉर्ड करा.
- मजकूरातील नमुना शोधणे सुरू ठेवा.
उदाहरण
मजकूर विचारात घ्या: "ababcababcabcabc" आणि एक नमुना: "abc"
- स्थिती 0 पासून प्रारंभ करा. पॅटर्नमधील पहिल्या वर्ण "a" शी "a" ची तुलना करा.
- जुळणी आढळली, पुढील वर्णांवर जा: "b" सह "b", आणि "a" सह "c".
- जुळणे सुरू ठेवा: "a" सह "b", "b" सह "a" आणि "c" सह "b"
- 2 क्रमांकावर सामना अयशस्वी झाला.
- स्थिती 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
फंक्शनचा वापर "abcbabcabcabc" मजकुरामध्ये "abc" पॅटर्नच्या घटना शोधण्यासाठी केला जातो. परिणाम एक वेक्टर असेल ज्यामध्ये सामन्यांची सुरुवातीची स्थिती असेल.