સ્ટ્રિંગ સર્ચ અલ્ગોરિધમનો ઉપયોગ મોટા ટેક્સ્ટ(સ્ટ્રિંગ) ની અંદર ચોક્કસ પેટર્ન(સબસ્ટ્રિંગ) ની ઘટનાઓ શોધવા માટે થાય છે. આ અલ્ગોરિધમ ટેક્સ્ટ પ્રોસેસિંગ, સર્ચિંગ અને મેનીપ્યુલેશન કાર્યોમાં નિર્ણાયક ભૂમિકા ભજવે છે.
તે કેવી રીતે કામ કરે છે
- શોધવા માટે ટેક્સ્ટ(સ્ટ્રિંગ) અને પેટર્ન(સબસ્ટ્રિંગ) થી પ્રારંભ કરો.
- ટેક્સ્ટ દ્વારા એક સમયે એક અક્ષર પુનરાવર્તિત કરો.
- ટેક્સ્ટમાં દરેક અક્ષર માટે, તેને પેટર્નના પ્રથમ અક્ષર સાથે સરખાવો.
- જો ત્યાં મેચ હોય, તો તપાસો કે પછીના અક્ષરો પણ પેટર્ન સાથે મેળ ખાય છે.
- જો પેટર્ન સંપૂર્ણપણે મેળ ખાતી હોય, તો મેચની શરૂઆતની સ્થિતિ રેકોર્ડ કરો.
- ટેક્સ્ટમાં પેટર્ન શોધવાનું ચાલુ રાખો.
ઉદાહરણ
એક ટેક્સ્ટનો વિચાર કરો: "ababcababcabcabc" અને એક પેટર્ન: "abc"
- સ્થિતિ 0 થી પ્રારંભ કરો. પેટર્નમાં પ્રથમ અક્ષર "a" સાથે "a" ની તુલના કરો.
- મેળ મળ્યો, આગલા અક્ષરો પર જાઓ: "b" સાથે "b" અને "c" સાથે "a".
- મેચ કરવાનું ચાલુ રાખો: "a" સાથે "b", "b" સાથે "b" અને "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
ફંક્શનનો ઉપયોગ "ababcababcabcabc" ટેક્સ્ટની અંદર પેટર્ન "abc" ની ઘટનાઓ શોધવા માટે થાય છે. પરિણામ મેચોની પ્રારંભિક સ્થિતિ ધરાવતું વેક્ટર હશે.