Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Thuật toán tìm kiếm chuỗi cho văn bản ngắn trong C++


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