Python tìm chuỗi con theo trình tự

Đối với việc xây dựng khác đôi khi gây nhầm lẫn ngay cả những lập trình viên Python dày dặn nhất. Nhưng nó thực sự không phức tạp chút nào

Mệnh đề khác được thực thi sau khi vòng lặp for kết thúc. Có thể khó biết liệu vòng lặp có hoàn thành thành công hay không, đặc biệt nếu có câu lệnh ngắt trong vòng lặp. Tuyên bố khác ở đây đảm bảo với chúng tôi rằng vòng lặp đã chạy thành công trong suốt

for j in range[6]:
    print[j]
else:
    print["No"]

đầu ra

0
1
2
3
4
5
No

Vì vậy, nó có vẻ dư thừa do đó có sự nhầm lẫn nhưng hãy nhìn nhận nó theo cách này. Điều gì sẽ xảy ra nếu có một câu lệnh ngắt trong vòng lặp

Đánh giá bài viết này

? . Accolite, Tesco, Google

Xây dựng vấn đề

Sự miêu tả

Cho hai chuỗi 

0
1
2
3
4
5
No
7 và 
0
1
2
3
4
5
No
8, hãy kiểm tra xem 
0
1
2
3
4
5
No
7 có phải là dãy con của 
0
1
2
3
4
5
No
8

Một dãy con của một chuỗi là một chuỗi mới được tạo thành từ chuỗi ban đầu bằng cách xóa một số [có thể không] ký tự mà không làm xáo trộn vị trí tương đối của các ký tự còn lại. [tôi. e. , 

Input: str1 = "", str2 = ""
Output: True

Input: str1 = "", str2 = "ahbgdc"
Output: True

Input: str1 = "abc", str2 = ""
Output: False
1 là dãy con của 
Input: str1 = "", str2 = ""
Output: True

Input: str1 = "", str2 = "ahbgdc"
Output: True

Input: str1 = "abc", str2 = ""
Output: False
2 trong khi 
Input: str1 = "", str2 = ""
Output: True

Input: str1 = "", str2 = "ahbgdc"
Output: True

Input: str1 = "abc", str2 = ""
Output: False
0 không phải]

hạn chế

  • Input: str1 = "", str2 = ""
    Output: True
    
    Input: str1 = "", str2 = "ahbgdc"
    Output: True
    
    Input: str1 = "abc", str2 = ""
    Output: False
    1
  • Input: str1 = "", str2 = ""
    Output: True
    
    Input: str1 = "", str2 = "ahbgdc"
    Output: True
    
    Input: str1 = "abc", str2 = ""
    Output: False
    2
  • 0
    1
    2
    3
    4
    5
    No
    7 và 
    0
    1
    2
    3
    4
    5
    No
    8 chỉ bao gồm các chữ cái tiếng Anh viết thường

Ví dụ

Input: str1 = "abc", str2 = "ahbgdc"
Output: True

Input: str1 = "axc", str2 = "ahbgdc"
Output: False

Trường hợp biên giới

  • Nếu
    0
    1
    2
    3
    4
    5
    No
    7 và
    0
    1
    2
    3
    4
    5
    No
    8 đều trống, thì Kết quả →
    Input: str1 = "", str2 = ""
    Output: True
    
    Input: str1 = "", str2 = "ahbgdc"
    Output: True
    
    Input: str1 = "abc", str2 = ""
    Output: False
    7, vì chuỗi rỗng là chuỗi con của một chuỗi trống khác
  • Nếu
    0
    1
    2
    3
    4
    5
    No
    7 → trống và
    0
    1
    2
    3
    4
    5
    No
    8 → không trống, thì Kết quả →
    Input: str1 = "", str2 = ""
    Output: True
    
    Input: str1 = "", str2 = "ahbgdc"
    Output: True
    
    Input: str1 = "abc", str2 = ""
    Output: False
    7, vì chuỗi rỗng cũng là chuỗi con của bất kỳ chuỗi đã cho nào
  • Nếu
    0
    1
    2
    3
    4
    5
    No
    7 → không trống và
    0
    1
    2
    3
    4
    5
    No
    8 → trống, thì Đầu ra →
    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]]
    
    3, vì chuỗi không rỗng không thể là chuỗi con của chuỗi rỗng
Input: str1 = "", str2 = ""
Output: True

Input: str1 = "", str2 = "ahbgdc"
Output: True

Input: str1 = "abc", str2 = ""
Output: False

Tổng quan về Giải pháp Đề xuất

Duyệt qua từng ký tự trong các chuỗi đã cho. Có hai trường hợp khi bạn làm như vậy

  1. Các ký tự hiện tại của cả hai chuỗi đều bằng nhau. Vì vậy, hãy chuyển sang chỉ mục/ký tự tiếp theo của
    0
    1
    2
    3
    4
    5
    No
    7 và
    0
    1
    2
    3
    4
    5
    No
    8
  2. Các ký tự hiện tại của cả hai chuỗi không bằng nhau. Vì vậy, hãy chuyển sang chỉ số/ký tự tiếp theo của
    0
    1
    2
    3
    4
    5
    No
    8. Tuy nhiên, chỉ mục của
    0
    1
    2
    3
    4
    5
    No
    7 vẫn cố định trong trường hợp này do không tìm thấy ký tự phù hợp

Quá trình trên được lặp lại cho đến khi thỏa mãn một trong các tiêu chí sau

  1. Tất cả các ký tự của
    0
    1
    2
    3
    4
    5
    No
    7 đều có mặt trong
    0
    1
    2
    3
    4
    5
    No
    8. Độ dài của
    0
    1
    2
    3
    4
    5
    No
    7 và giá trị hiện tại của
    0
    1
    2
    3
    4
    5
    No
    01 sẽ bằng nhau trong trường hợp này. Điều này biểu thị rằng chúng tôi đã tìm thấy thành công chuỗi con trong chuỗi đã cho. Nói cách khác,
    0
    1
    2
    3
    4
    5
    No
    7 là dãy con của
    0
    1
    2
    3
    4
    5
    No
    8
  2. Tất cả các ký tự của
    0
    1
    2
    3
    4
    5
    No
    8 đã được duyệt qua. Điều này có nghĩa là ký tự cuối cùng của
    0
    1
    2
    3
    4
    5
    No
    7 và
    0
    1
    2
    3
    4
    5
    No
    8 bằng nhau hoặc
    0
    1
    2
    3
    4
    5
    No
    8 không phải là dãy con của
    0
    1
    2
    3
    4
    5
    No
    7

biểu diễn sơ đồ

Dung dịch

________số 8

đầu ra

0
1
2
3
4
5
No
0

Giải thích mã

  • 0
    1
    2
    3
    4
    5
    No
    09 và
    0
    1
    2
    3
    4
    5
    No
    70 lần lượt lưu trữ độ dài của
    0
    1
    2
    3
    4
    5
    No
    7 và
    0
    1
    2
    3
    4
    5
    No
    8
  • 0
    1
    2
    3
    4
    5
    No
    01 và
    0
    1
    2
    3
    4
    5
    No
    74 được sử dụng để lưu trữ các chỉ số của từng ký tự của
    0
    1
    2
    3
    4
    5
    No
    7 và
    0
    1
    2
    3
    4
    5
    No
    8 tương ứng
  • Vòng lặp
    0
    1
    2
    3
    4
    5
    No
    77 đượ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ớp
    • 0
      1
      2
      3
      4
      5
      No
      78 so sánh ký tự hiện tại của
      0
      1
      2
      3
      4
      5
      No
      7 và
      0
      1
      2
      3
      4
      5
      No
      8
      • Trong trường hợp tìm thấy kết quả trùng khớp, chỉ số của ký tự tiếp theo trong
        0
        1
        2
        3
        4
        5
        No
        7 sẽ được tính đến
    • Giá trị của
      0
      1
      2
      3
      4
      5
      No
      01 đượ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 trong
      0
      1
      2
      3
      4
      5
      No
      7 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 trữ bởi
    0
    1
    2
    3
    4
    5
    No
    01 sẽ bằng với độ dài của
    0
    1
    2
    3
    4
    5
    No
    7

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

Chủ Đề