Algoritma Panelusuran String (String Search) ing C++- Panjelasan, Tuladha lan Kode

Algoritma telusuran string digunakake kanggo nemokake kedadeyan pola tartamtu(substring) ing teks sing luwih gedhe(string). Algoritma iki nduweni peran penting ing pangolahan teks, telusuran, lan tugas manipulasi.

Cara Kerjane

  1. Miwiti kanthi teks(string) lan pola(substring) kanggo nggoleki.
  2. Baleni liwat teks siji karakter ing wektu.
  3. Kanggo saben karakter ing teks, mbandhingake karo karakter pisanan saka pola.
  4. Yen ana sing cocog, priksa manawa karakter sabanjure uga cocog karo pola kasebut.
  5. Yen pola wis rampung cocog, rekam posisi wiwitan pertandhingan.
  6. Terusake nggoleki pola ing teks kasebut.

Tuladha

Coba teks: "ababcababcabcabc" Lan pola: "abc"

  1. Mulai ing posisi 0. Bandhingake "a" karo karakter pisanan "a" ing pola.
  2. Cocokake ketemu, pindhah menyang karakter sabanjuré: "b" karo "b", lan "a" karo "c".
  3. Terus cocog: "b" karo "a", "a" karo "b", lan "b" karo "c".
  4. Pertandhingan gagal ing posisi 2.
  5. Mulai maneh ing posisi 3. Bandhingake "a" karo karakter pisanan "a" ing pola.
  6. Pertandhingan sukses: "a" karo "a", "b" karo "b", lan "c" karo "c".
  7. Posisi rekaman 3.

Pola "abc" ditemokake ing posisi 0, 6, lan 9.

Tuladha Kode ing 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;  
}  

Ing conto iki, stringSearch fungsi digunakake kanggo nemokake kedadean saka pola "abc" ing teks "ababcababcabcabc". Asil bakal dadi vektor sing ngemot posisi wiwitan pertandhingan.