Algartam Cuardaigh Teaghrán (String Search) i C++- Míniú, Sampla agus Cód

Úsáidtear an t-algartam cuardaigh teaghrán chun tarluithe de phatrún ar leith(fotheaghrán) a aimsiú laistigh de théacs níos mó(teaghrán). Tá ról ríthábhachtach ag an algartam seo i bpróiseáil téacs, cuardach agus tascanna ionramhála.

Conas a oibríonn sé

  1. Tosaigh le téacs(teaghrán) agus patrún(fotheaghrán) le cuardach a dhéanamh air.
  2. Atriall tríd an téacs carachtar amháin ag an am.
  3. Maidir le gach carachtar sa téacs, déan é a chur i gcomparáid leis an gcéad charachtar den phatrún.
  4. Má tá meaitseáil ann, seiceáil an bhfuil na carachtair ina dhiaidh sin ag teacht leis an bpatrún freisin.
  5. Má tá an patrún comhoiriúnaithe go hiomlán, taifead suíomh tosaigh an chluiche.
  6. Lean ar aghaidh ag cuardach an phatrúin sa téacs.

Sampla

Smaoinigh ar théacs: "ababcababcabcabc" Agus patrún: "abc"

  1. Tosaigh ag suíomh 0. Cuir "a" i gcomparáid leis an gcéad charachtar "a" sa phatrún.
  2. Comhoiriúnacht aimsithe, bog go dtí na carachtair eile: "b" le "b", agus "a" le "c".
  3. Lean ar aghaidh ag meaitseáil: "b" le "a", "a" le "b", agus "b" le "c".
  4. Theip ar an gcluiche ag suíomh 2.
  5. Tosaigh arís ag suíomh 3. Déan comparáid idir "a" agus an chéad charachtar "a" sa phatrún.
  6. Meaitseáil rathúil: "a" le "a", "b" le "b", agus "c" le "c".
  7. Taifead seasamh 3.

Faightear an patrún "abc" ag suíomhanna 0, 6, agus 9.

Cód Samplach i 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;  
}  

Sa sampla seo, stringSearch úsáidtear an fheidhm chun tarluithe den phatrún "abc" a fháil laistigh den téacs "ababcababcabcabc". Is é an toradh a bheidh air ná veicteoir ina mbeidh suíomhanna tosaigh na gcluichí.