టెక్స్ట్ సెర్చ్ అల్గోరిథం అనేది టెక్స్ట్ ప్రాసెసింగ్ మరియు ఇన్ఫర్మేషన్ రిట్రీవల్లో ఒక ప్రాథమిక పద్ధతి. ఈ అల్గారిథమ్ పెద్ద టెక్స్ట్లో సబ్స్ట్రింగ్(లేదా నమూనా) యొక్క సంఘటనలను గుర్తించడానికి మరియు గుర్తించడానికి అనుమతిస్తుంది.
అది ఎలా పని చేస్తుంది
- శోధించడానికి పెద్ద వచనం(లేదా పత్రం) మరియు సబ్స్ట్రింగ్తో ప్రారంభించండి.
- వచనంలోని ప్రతి అక్షరాన్ని వరుసగా మళ్ళించండి.
- సబ్స్ట్రింగ్తో సమానమైన పొడవు ఉన్న టెక్స్ట్లోని కొంత భాగంతో సబ్స్ట్రింగ్ను సరిపోల్చండి. సరిపోలిక కనుగొనబడితే, ప్రస్తుత స్థానాన్ని రికార్డ్ చేయండి.
- తదుపరి స్థానానికి తరలించి, పోలికను కొనసాగించండి.
ఉదాహరణ
వచనాన్ని పరిగణించండి: "అల్గారిథమ్ ఎలా పనిచేస్తుందో చూడటానికి ఈ టెక్స్ట్లోని సబ్స్ట్రింగ్ కోసం శోధిద్దాం."
మరియు శోధించాల్సిన సబ్స్ట్రింగ్: "సబ్స్ట్రింగ్"
- స్థానం 0 వద్ద ప్రారంభించండి.
Let'
"సబ్స్ట్రింగ్"తో సరిపోల్చండి. పోలిక లేదు. - స్థానానికి తరలించు 1.
et's
"సబ్స్ట్రింగ్"తో సరిపోల్చండి. పోలిక లేదు. - స్థానం 2కి తరలించండి.
t's
"సబ్స్ట్రింగ్"తో " సరిపోల్చండి. సరిపోలిక లేదు. - స్థానానికి తరలించు 3.
's s
"సబ్స్ట్రింగ్"తో సరిపోల్చండి. పోలిక లేదు. - స్థానానికి తరలించు 4.
se
"సబ్స్ట్రింగ్"తో సరిపోల్చండి. పోలిక లేదు. - స్థానానికి తరలించు 5.
sea
"సబ్స్ట్రింగ్"తో సరిపోల్చండి. పోలిక లేదు. - స్థానానికి తరలించు 6.
earc
"సబ్స్ట్రింగ్"తో సరిపోల్చండి. పోలిక లేదు. - స్థానానికి తరలించు 7.
arch
"సబ్స్ట్రింగ్"తో సరిపోల్చండి. పోలిక లేదు. - స్థానం 8కి తరలించండి.
rch
"సబ్స్ట్రింగ్"తో " సరిపోల్చండి. సరిపోలిక లేదు. - స్థానానికి తరలించు 9.
ch w
"సబ్స్ట్రింగ్"తో సరిపోల్చండి. పోలిక లేదు. -
h wi
స్థానం 10కి తరలించండి. "సబ్స్ట్రింగ్"తో సరిపోల్చండి. పోలిక లేదు. - 11వ స్థానానికి తరలించండి.
wit
"సబ్స్ట్రింగ్"తో " సరిపోల్చండి. సరిపోలిక లేదు. - 12వ స్థానానికి తరలించండి.
with
"సబ్స్ట్రింగ్"తో సరిపోల్చండి. పోలిక లేదు. - 13వ స్థానానికి తరలించండి.
ithi
"సబ్స్ట్రింగ్"తో సరిపోల్చండి. పోలిక లేదు. - 14వ స్థానానికి తరలించండి.
thin
"సబ్స్ట్రింగ్"తో సరిపోల్చండి. పోలిక లేదు. - 15వ స్థానానికి తరలించండి.
hinn
"సబ్స్ట్రింగ్"తో సరిపోల్చండి. పోలిక లేదు. - 16వ స్థానానికి తరలించండి.
in t
"సబ్స్ట్రింగ్"తో సరిపోల్చండి. పోలిక లేదు. - 17వ స్థానానికి తరలించండి.
n th
"సబ్స్ట్రింగ్"తో సరిపోల్చండి. పోలిక లేదు. - 18వ స్థానానికి తరలించండి.
thi
"సబ్స్ట్రింగ్"తో " సరిపోల్చండి. సరిపోలిక లేదు. - 19వ స్థానానికి తరలించండి.
this
"సబ్స్ట్రింగ్"తో సరిపోల్చండి. పోలిక లేదు. - స్థానం 20కి తరలించండి.
his
"సబ్స్ట్రింగ్"తో " సరిపోల్చండి. సరిపోలిక లేదు. - స్థానానికి తరలించు 21.
is t
"సబ్స్ట్రింగ్"తో సరిపోల్చండి. పోలిక లేదు. - స్థానానికి తరలించు 22.
s te
"సబ్స్ట్రింగ్"తో సరిపోల్చండి. పోలిక లేదు. - 23వ స్థానానికి తరలించండి.
ubst
"సబ్స్ట్రింగ్"తో సరిపోల్చండి. పోలిక లేదు. - 24వ స్థానానికి తరలించండి.
bstr
"సబ్స్ట్రింగ్"తో సరిపోల్చండి. పోలిక లేదు. - 25వ స్థానానికి తరలించండి.
stre
"సబ్స్ట్రింగ్"తో సరిపోల్చండి. పోలిక లేదు. - 26వ స్థానానికి తరలించండి.
trin
"సబ్స్ట్రింగ్"తో సరిపోల్చండి. పోలిక లేదు. - 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
టెక్స్ట్లోని సబ్స్ట్రింగ్ "సబ్స్ట్రింగ్" యొక్క స్థానాలను కనుగొనడానికి ఫంక్షన్ ఉపయోగించబడుతుంది. ఫలితం మ్యాచ్ల ప్రారంభ స్థానాలను కలిగి ఉన్న వెక్టర్ అవుతుంది.