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
- Miwiti kanthi teks(string) lan pola(substring) kanggo nggoleki.
- Baleni liwat teks siji karakter ing wektu.
- Kanggo saben karakter ing teks, mbandhingake karo karakter pisanan saka pola.
- Yen ana sing cocog, priksa manawa karakter sabanjure uga cocog karo pola kasebut.
- Yen pola wis rampung cocog, rekam posisi wiwitan pertandhingan.
- Terusake nggoleki pola ing teks kasebut.
Tuladha
Coba teks: "ababcababcabcabc" Lan pola: "abc"
- Mulai ing posisi 0. Bandhingake "a" karo karakter pisanan "a" ing pola.
- Cocokake ketemu, pindhah menyang karakter sabanjuré: "b" karo "b", lan "a" karo "c".
- Terus cocog: "b" karo "a", "a" karo "b", lan "b" karo "c".
- Pertandhingan gagal ing posisi 2.
- Mulai maneh ing posisi 3. Bandhingake "a" karo karakter pisanan "a" ing pola.
- Pertandhingan sukses: "a" karo "a", "b" karo "b", lan "c" karo "c".
- 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.