Cho chuỗi văn bản và mẫu (pattern). Tìm tất cả vị trí xuất hiện của mẫu trong văn bản. Thuật toán đơn giản: trượt mẫu qua văn bản, so sánh ký tự từng cặp.
Thuật toán
Bắt đầu
Nhập chuỗi gốc S, mẫu P
n = |S|, m = |P|
cho i = 0 đến n-m:
cho j = 0 đến m-1:
nếu S[i+j] != P[j] thì break
nếu j == m: tìm thấy tại vị trí i
Nếu không tìm thấy: in "Khong tim thay"
Kết thúc
Ví dụ minh họa
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char S[120], P[120];
cout << "Nhap chuoi khong khoang trang: ";
cin >> S;
cout << "Nhap mau can tim: ";
cin >> P;
int n = strlen(S), m = strlen(P), cnt = 0;
for (int i=0; i<=n-m; i++) {
int j;
for (j=0; j
Kết quả (ví dụ)
Nhap chuoi khong khoang trang: aaaaa
Nhap mau can tim: aa
Tim thay tai vi tri 0
Tim thay tai vi tri 1
Tim thay tai vi tri 2
Tim thay tai vi tri 3
Tong so lan: 4