Hai con trỏ
Mô tả
Anh Long làm quản trị hệ thống thanh toán tại ShopeePay. Mỗi ngày, cổng thanh toán sinh ra một chuỗi ký tự cho phép rất dài, bao gồm các chữ cái và chữ số. Khi một giao dịch đến, hệ thống tạo ra một mã giao dịch ngắn. Anh Long cần kiểm tra xem mã giao dịch này có thể được tạo ra từ chuỗi ký tự cho phép hay không — cụ thể, mã giao dịch phải là một dãy con của chuỗi cho phép (tức là ta có thể xóa một số ký tự khỏi chuỗi cho phép, nhưng không đổi thứ tự các ký tự còn lại, để thu được đúng mã giao dịch). Hãy viết hàm kiểm tra điều này.
Đầu vào
Hàm nhận hai tham số:
source(chuỗi): chuỗi ký tự cho phép do cổng sinh ra.target(chuỗi): mã giao dịch cần kiểm tra.
Đầu ra
Trả về true nếu target là dãy con của source, ngược lại trả về false.
Ràng buộc
- Độ dài
sourcetừ 1 đến 10^5 ký tự. - Độ dài
targettừ 0 đến 10^5 ký tự. - Mỗi ký tự trong
sourcevàtargetlà chữ cái thường (a-z), chữ hoa (A-Z) hoặc chữ số (0-9).
Ví dụ
Ví dụ 1:
- Đầu vào:
source = "SP9X2K7M4",target = "SP2K4" - Đầu ra:
true - Giải thích: Trong chuỗi
SP9X2K7M4, ta giữ lại các ký tự S (vị trí 0), P (vị trí 1), 2 (vị trí 4), K (vị trí 5), 4 (vị trí 8) và xóa các ký tự 9, X, 7, M. Kết quả thu được đúngSP2K4.
Ví dụ 2:
- Đầu vào:
source = "SP9X2K7M4",target = "SP4K2" - Đầu ra:
false - Giải thích: Trong
source, ký tự 4 nằm sau ký tự K, nhưngtargetyêu cầu 4 xuất hiện trước K. Vì không được đổi thứ tự nên không thể tạo raSP4K2.