- Mã:
- [DHLTNC_05]Z_Algorithm_1
- Tên:
- DHLTNC_Nhóm_5_Bài1
- Dạng thi:
- oi
- Thang điểm:
- 10 điểm
- Giới hạn thời gian:
- 1 giây
- Giới hạn bộ nhớ:
- 256 MB
- Được tạo bởi:
- 4801103003
Một công ty phát triển phần mềm đang quản lý các phiên bản
khác nhau của một ứng dụng. Để dễ dàng theo dõi các tính năng cốt lõi, họ muốn
xác định tiền tố chung dài nhất giữa phiên bản hiện tại và chính nó. Điều này
giúp họ nhận biết phần đầu của mã nguồn có sự ổn định và ít thay đổi nhất.
Cho một chuỗi đại diện cho mã nguồn của phiên bản hiện tại của
phần mềm. Hãy sử dụng thuật toán Z để tạo ra một mảng, trong đó mỗi phần tử tại
vị trí i (bắt đầu từ 1) cho biết độ dài của đoạn mã bắt đầu từ vị trí i trùng
khớp với phần đầu của mã nguồn (từ vị trí 0). Nếu không có tiền tố chung nào
(ngoại trừ tiền tố độ dài 0 tại các vị trí khác 0), hãy xuất ra "No".
**Input:**
Dòng 1: Chuỗi mã nguồn của phiên bản hiện tại, không dấu.
**Output:**
Xuất ra một mảng các số nguyên cách nhau bởi khoảng trắng,
trong đó phần tử thứ i (i bắt đầu từ 1) là độ dài của tiền tố chung giữa chuỗi
bắt đầu từ vị trí i và chuỗi bắt đầu từ vị trí 0. Nếu không có tiền tố chung
nào (ngoại trừ vị trí 0), hãy xuất ra "No".
**Cụ thể mời xem các ví dụ dưới đây:**
Ví dụ:
Input |
Output |
aaaa |
3 2 1 |
Ví dụ:
Input |
Output |
abcab |
0 0 2 0 |
Theme :
Mời bạn soạn code