Trong hướng dẫn này, chúng ta sẽ tìm hiểu một vấn đề rất thú vị được gọi là In tất cả các dãy con/tập hợp con có thể có của một chuỗi cụ thể
Giải thích khái niệm
Đối với mọi phần tử trong chuỗi đã cho, có hai cách chọn
- Đưa phần tử đầu tiên vào dãy con và tìm dãy con của các phần tử còn lại
- Hoặc không tính phần tử đầu và tìm dãy con các phần tử còn lại
Điều tương tự cũng được áp dụng ở mỗi và mọi lệnh gọi đệ quy cho đến khi chúng ta đạt được chỉ mục cuối cùng của mảng đã cho
Trong trường hợp đó, ta chỉ cần in dãy con đã tạo rồi quay lại tìm dãy con tiếp theo. Nếu bạn muốn biết thêm về đệ quy, hãy đọc hướng dẫn được đề cập bên dưới
Đây là bài toán yêu cầu chúng ta tạo một hàm kiểm tra xem một dãy số có phải là dãy con của một mảng đã cho hay không
Dãy con của mảng là tập hợp các số nguyên không nhất thiết phải liền kề trong mảng đã cho nhưng theo thứ tự xuất hiện trong mảng
Ví dụ: cho một mảng [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], một dãy con hợp lệ sẽ là [2,4,6,8,10]. Các số không trực tiếp cạnh nhau, nhưng chúng có cùng thứ tự như khi các số nguyên này nằm trong mảng ban đầu
Một điều cần lưu ý là một số duy nhất trong một mảng và chính mảng đó đều là các dãy con hợp lệ của một đầu vào mảng đã cho
Với thông tin đó, chúng ta hãy bắt đầu phân tích và giải quyết vấn đề
lời nhắcCho hai mảng số nguyên khác nhau, hãy viết hàm xác định xem mảng thứ hai có phải là dãy con của mảng thứ nhất không
Mật mãHãy bắt đầu bằng cách khởi tạo hàm với các tham số chính xác, một mảng và một dãy số
Giải pháp
def isSubSequence[str1, str2]: len_str1 = len[str1] len_str2 = len[str2] index_str1 = 0 index_str2 = 0 # Traverse both str1 and str2 while index_str1 < len_str1 and index_str2 < len_str2: # Compare current character of str2 with str1 if str1[index_str1] == str2[index_str2]: # If matched, then move to next character in str1 index_str1 = index_str1 + 1 index_str2 = index_str2 + 1 return index_str1 == len_str1 val_1 = 'abc' val_2 = 'ahbgdc' print[isSubSequence[val_1, val_2]]
đầu ra
________số 8_______Giải thích mã
True
9 vàstr1
0 lần lượt lưu trữ độ dài củastr1
vàstr2
True
1 vàstr1
4 được sử dụng để lưu trữ các chỉ số của mỗi ký tự củastr1
vàstr2
tương ứng- Vòng lặp
str1
7 được sử dụng để duyệt qua các chuỗi cho đến khi tìm thấy kết quả khớp hoặc tất cả các chỉ số của str2 đã được duyệt trong trường hợp không khớpstr1
8 so sánh ký tự hiện tại củastr1
vàstr2
- Trong trường hợp tìm thấy sự trùng khớp, chỉ số của ký tự tiếp theo trong
str1
sẽ được tính đến
- Trong trường hợp tìm thấy sự trùng khớp, chỉ số của ký tự tiếp theo trong
- Giá trị của
True
1 được tăng lên sau mỗi lần lặp để duyệt qua tất cả các chữ cái có sẵn trongstr1
cho đến khi tìm thấy dãy con
- Cuối cùng, nếu dãy con được tìm thấy thì giá trị được lưu bởi
True
1 sẽ bằng độ dài củastr1
chạy khô
Bảng sau đây minh họa hoạt động ở mỗi lần lặp trong vòng lặp while cho đến khi tìm thấy kết quả phù hợp
?
Làm cách nào để kiểm tra xem một chuỗi có phải là chuỗi con của chuỗi khác không?
Xem video này trên YouTube
Shubham Sayon
Tôi là một người tạo nội dung và Blogger Python chuyên nghiệp. Tôi đã xuất bản nhiều bài báo và tạo các khóa học trong một khoảng thời gian. Hiện tại tôi đang làm việc với tư cách là một freelancer toàn thời gian và tôi có kinh nghiệm trong các lĩnh vực như Python, AWS, DevOps và Networking