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:
```python
S = "12121341212100"
str = "121"
n = len(S)
m = len(str)
count = 0
k = 0
Indx = 0

while k <= n - m and Indx >= 0:
Indx = S.find(str, k)
if Indx >= 0:
count = count + 1
k = Indx + m

print(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.
Bình luận (0)
Nhấn vào đây để đánh giá
Thông tin người gửi
0.11274 sec| 2203.602 kb