(Text Search) C++ ਵਿੱਚ ਟੈਕਸਟ ਖੋਜ ਐਲਗੋਰਿਦਮ- ਵਿਆਖਿਆ, ਉਦਾਹਰਨ ਅਤੇ ਕੋਡ

ਟੈਕਸਟ ਖੋਜ ਐਲਗੋਰਿਦਮ ਟੈਕਸਟ ਪ੍ਰੋਸੈਸਿੰਗ ਅਤੇ ਜਾਣਕਾਰੀ ਪ੍ਰਾਪਤੀ ਵਿੱਚ ਇੱਕ ਬੁਨਿਆਦੀ ਤਰੀਕਾ ਹੈ। ਇਹ ਐਲਗੋਰਿਦਮ ਸਾਨੂੰ ਟੈਕਸਟ ਦੇ ਇੱਕ ਵੱਡੇ ਟੁਕੜੇ ਦੇ ਅੰਦਰ ਇੱਕ ਸਬਸਟ੍ਰਿੰਗ(ਜਾਂ ਪੈਟਰਨ) ਦੀਆਂ ਘਟਨਾਵਾਂ ਦਾ ਪਤਾ ਲਗਾਉਣ ਅਤੇ ਪਛਾਣ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ।

ਕਿਦਾ ਚਲਦਾ

  1. ਟੈਕਸਟ ਦੇ ਇੱਕ ਵੱਡੇ ਟੁਕੜੇ(ਜਾਂ ਦਸਤਾਵੇਜ਼) ਅਤੇ ਖੋਜ ਕਰਨ ਲਈ ਇੱਕ ਸਬਸਟ੍ਰਿੰਗ ਨਾਲ ਸ਼ੁਰੂ ਕਰੋ।
  2. ਪਾਠ ਦੇ ਹਰੇਕ ਅੱਖਰ ਨੂੰ ਕ੍ਰਮਵਾਰ ਦੁਹਰਾਓ।
  3. ਸਬਸਟਰਿੰਗ ਦੀ ਟੈਕਸਟ ਦੇ ਉਸ ਹਿੱਸੇ ਨਾਲ ਤੁਲਨਾ ਕਰੋ ਜਿਸਦੀ ਲੰਬਾਈ ਸਬਸਟਰਿੰਗ ਦੇ ਬਰਾਬਰ ਹੈ। ਜੇਕਰ ਕੋਈ ਮੇਲ ਮਿਲਦਾ ਹੈ, ਤਾਂ ਮੌਜੂਦਾ ਸਥਿਤੀ ਨੂੰ ਰਿਕਾਰਡ ਕਰੋ।
  4. ਅਗਲੀ ਸਥਿਤੀ 'ਤੇ ਜਾਓ ਅਤੇ ਤੁਲਨਾ ਜਾਰੀ ਰੱਖੋ।

ਉਦਾਹਰਨ

ਟੈਕਸਟ 'ਤੇ ਵਿਚਾਰ ਕਰੋ: "ਆਓ ਇਸ ਟੈਕਸਟ ਦੇ ਅੰਦਰ ਇੱਕ ਸਬਸਟਰਿੰਗ ਦੀ ਖੋਜ ਕਰੀਏ ਤਾਂ ਜੋ ਇਹ ਦੇਖਣ ਲਈ ਕਿ ਐਲਗੋਰਿਦਮ ਕਿਵੇਂ ਕੰਮ ਕਰਦਾ ਹੈ."

ਅਤੇ ਖੋਜਣ ਲਈ ਸਬਸਟਰਿੰਗ: "substring"

  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 ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਟੈਕਸਟ ਦੇ ਅੰਦਰ ਸਬਸਟਰਿੰਗ "ਸਬਸਟ੍ਰਿੰਗ" ਦੀਆਂ ਸਥਿਤੀਆਂ ਨੂੰ ਲੱਭਣ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਨਤੀਜਾ ਇੱਕ ਵੈਕਟਰ ਹੋਵੇਗਾ ਜਿਸ ਵਿੱਚ ਮੈਚਾਂ ਦੀਆਂ ਸ਼ੁਰੂਆਤੀ ਸਥਿਤੀਆਂ ਸ਼ਾਮਲ ਹਨ।