(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. h wi స్థానం 10కి తరలించండి. "సబ్‌స్ట్రింగ్"తో సరిపోల్చండి. పోలిక లేదు.
  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 టెక్స్ట్‌లోని సబ్‌స్ట్రింగ్ "సబ్‌స్ట్రింగ్" యొక్క స్థానాలను కనుగొనడానికి ఫంక్షన్ ఉపయోగించబడుతుంది. ఫలితం మ్యాచ్‌ల ప్రారంభ స్థానాలను కలిగి ఉన్న వెక్టర్ అవుతుంది.