32.3. Bài toán đếm số lần lặp của một mẫu xâu trong xâu gốc như sau: Cho trước xâu gốc S và một xâu...
Câu hỏi:
32.3. Bài toán đếm số lần lặp của một mẫu xâu trong xâu gốc như sau: Cho trước xâu gốc S và một xâu mẫu str. Yêu cầu cần tìm số lần lặp của xâu mẫu str trong xâu gốc S. Có hai kiểu tìm số lần lặp:
1 - Tìm số lần lặp xâu con có thể chồng lấn lên nhau.
2 - Tìm số lần lặp không chồng lấn của xâu con.
Ví dụ nếu xâu gốc là "12121341212100", xâu con mẫu là "121" thì:
- Số lần lặp có chồng lấn của str trong S là 4 lần.
- Số lần lặp không chồng lấn của str trong S là 2 lần.
Bài toán như sau: Cho trước các xâu kí tự S và str, hãy tìm số lần lặp không chồng lấn của xâu str trong xâu S.
Câu trả lời:
Người trả lời: GV. Đỗ Văn Dung
Để giải bài toán đếm số lần lặp không chồng lấn của một xâu mẫu trong xâu gốc, ta có thể sử dụng hàm find() trong Python để tìm vị trí xuất hiện đầu tiên của xâu mẫu trong xâu gốc. Sau đó, ta sẽ tăng biến đếm lên 1 và cập nhật vị trí bắt đầu tìm kiếm thành vị trí tiếp theo sau vị trí tìm thấy.Một cách để giải bài toán trên có thể là:1. Khởi tạo biến count để đếm số lần lặp.2. Sử dụng hàm find() để tìm vị trí xuất hiện của xâu mẫu trong xâu gốc.3. Nếu vị trí tìm được lớn hơn hoặc bằng 0, tăng biến đếm lên 1 và cập nhật vị trí bắt đầu tìm kiếm tiếp theo sau vị trí tìm thấy.4. Lặp lại quá trình cho đến khi không tìm thấy vị trí nào nữa trong xâu gốc.Câu trả lời có thể viết lại như sau:```pythonS = "12121341212100"str = "121"n = len(S)m = len(str)count = 0k = 0Indx = 0while k <= n - m and Indx >= 0: Indx = S.find(str, k) if Indx >= 0: count = count + 1 k = Indx + mprint(count)``` Đây là một cách giải bài toán đếm số lần lặp không chồng lấn của xâu mẫu trong xâu gốc. Để đạt hiệu suất tốt hơn, có thể tối ưu hoá thuật toán nếu cần.
Câu hỏi liên quan:
- 32.1. Em hãy viết chương trình nhập một họ tên đầy đủ từ bàn phím, ví dụ "Nguyễn Thị Mai Hương",...
- 32.2. Nhà nước quản lí lượng tiêu thụ điện được thống kê theo tháng. Tháng được gọi là đột biến nếu...
- 32.4. Cho trước dãy số. Yêu cầu cần tìm ra một dãy con liên tục có độ dài lớn nhất bao gồm các số...
- 32.5. Trong các phần mềm bảng tính đện tử, dữ liệu ngày tháng được coi là số ngày tính từ ngày...
- 32.6. Trong các phần mềm bảng tính điện tử, dữ liệu ngày tháng được coi là số ngày tính từ ngày...
- 32.7. Viết chương trình nhập số n, sau đó nhập danh sách học sinh trong lớp với đầy đủ họ, đệm,...
- 32.8. Mở rộng bài tập trên như sau:Việc sắp xếp thứ tự phải ưu tiên tính theo tên trước, rồi đến họ...
- 32.9. Nếu n là hợp số thì dễ thấy n phải có ước số nguyên tố nhỏ hơn hoặc bằng căn bậc hai của n....
- 32.10. Bài toán mô tả đường bay của hòn đá khi được ném lên.Viết chương trình mô tả bài toán chuyển...
Bình luận (0)