Đếm xuất hiện mẫu (KMP)
Đề bài
Mô tả
Cho xâu văn bản độ dài và xâu mẫu độ dài , chỉ gồm các chữ cái thường (a–z).
Hãy đếm số lần xâu mẫu xuất hiện trong với tư cách là một xâu con liên tiếp. Hai lần xuất hiện được phép chồng lấp (nghĩa là hai vị trí bắt đầu khác nhau đều được tính, ngay cả khi các đoạn của chúng giao nhau).
Dữ liệu vào
- Dòng 1: xâu .
- Dòng 2: xâu mẫu .
Dữ liệu ra
In ra một số nguyên duy nhất là số lần xuất hiện trong .
Ràng buộc
- .
- và chỉ gồm các chữ cái thường
a–z.
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| ababab aba |
2 | Mẫu aba xuất hiện tại vị trí 1 (ababab) và vị trí 3 (ababab). Hai lần xuất hiện chồng lấp ký tự a ở vị trí 3. |
| aaaaa aa |
4 | Mẫu aa xuất hiện tại các vị trí bắt đầu 1, 2, 3, 4. |
| abcabcabc abcd |
0 | Mẫu abcd không xuất hiện trong . |
Ghi chú
Với lên tới , lời giải kiểm tra mọi vị trí bắt đầu một cách ngây thơ sẽ không đủ nhanh. Hãy nghĩ tới một thuật toán so khớp xâu chạy trong thời gian tuyến tính theo .
Bình luận