Tìm mẫu
Thuộc phần Kiến thức nền tảng trong hành trình Swift của Coddy. Bài học 85 trên 86.
Thử thách
DễĐọc hai dòng đầu vào: dòng thứ nhất là văn bản cần tìm kiếm, dòng thứ hai là mẫu cần tìm.
Đếm số lần mẫu xuất hiện trong văn bản, kể cả các lần xuất hiện chồng lấp, rồi in số lượng đó ra.
Yêu cầu:
- Đọc chuỗi văn bản từ dòng đầu tiên của đầu vào
- Đọc chuỗi mẫu từ dòng thứ hai của đầu vào
- Duyệt qua văn bản và kiểm tra mẫu ở từng vị trí
- Đếm tất cả các lần xuất hiện, kể cả những lần khớp chồng lấp
- In tổng số lần xuất hiện dưới dạng một số nguyên duy nhất
Gợi ý: Để trích xuất một chuỗi con bắt đầu tại chỉ số i với độ dài cụ thể, bạn có thể dùng cách cắt chuỗi với các chỉ số. Hãy chuyển chuỗi thành mảng ký tự hoặc dùng cách thao tác với chỉ số chuỗi của Swift để kiểm tra xem mẫu có khớp ở từng vị trí hay không.
Ví dụ:
Nếu đầu vào là:
ababa
abaĐầu ra sẽ là:
2Mẫu "aba" xuất hiện tại chỉ số 0 và chỉ số 2 trong "ababa".
Tự làm thử
// Đọc đầu vào
let text = readLine()!
let pattern = readLine()!
// TODO: Viết code bên dưới
// Đếm số lần pattern xuất hiện trong text (kể cả các lần xuất hiện chồng lấp)
// In kết quả ra
print(count)Tất cả bài học trong Kiến thức nền tảng
4Các toán tử, phần 1
Toán tử số họcToán tử moduloPhép gán kết hợpÔn tập: phép tính đơn giảnToán tử so sánh7Nhập xuất cơ bản
Hàm in raNội suy chuỗiĐầu vào từ dòngChuyển đổi kiểu dữ liệuÔn tập đến 120Ôn tập đúng hay sai3Giá trị tùy chọn
Giá trị tùy chọn là gìMở gói bằng if letGuard letToán tử gộp nilÔn tập: mở gói an toàn6Ra quyết định
Câu lệnh ifIf và elseÔn tập: máy tính đơn giảnCâu lệnh switchSwitch với khoảng giá trị9Vòng lặp
Vòng lặp for-inVòng lặp whileVòng lặp repeat-whileBreakContinueÔn tập: giai thừaDải giá trị trong vòng lặpVòng lặp lồng nhauÔn tập: đầu vào động12Kiến thức cơ bản về mảng
Khai báo mảngTruy cập phần tửChỉnh sửa mảngPhương thức của mảngÔn tập: Danh sách sản phẩmÔn tập: Mảng đảo ngượcTuple15Trình theo dõi chi tiêu hằng ngày
Tổng quan về dự ánThoát chương trìnhTự luyện tập: Playground Swift