Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Khoảng cách nhỏ nhất giữa hai từ trong văn bản Python

Cho hai từ word0, word1 và một văn bản text. Tìm khoảng cách nhỏ nhất (số từ) giữa bất kỳ cặp xuất hiện nào của hai từ. Trả về -1 nếu không có.

Ví dụ: text = "cat dog abcd dog cat cat abcd dog wxyz", word0 = "abcd", word1 = "wxyz" → kết quả 1 (có 1 từ "dog" giữa).

Các bước giải quyết

  • word_list := tách text thành danh sách từ
  • ans = len(word_list), L = None
  • Duyệt chỉ số R từ 0 đến độ dài - 1:
    • Nếu word_list[R] là word0 hoặc word1:
      • Nếu L is not None và word_list[R] != word_list[L]:
        • ans = min(ans, R - L - 1)
      • L = R
    • Trả về -1 nếu ans == len(word_list) ngược lại ans

    Ví dụ mã Python

    class Solution:
        def solve(self, text, word0, word1):
            word_list = text.split()
            ans = len(word_list)
            L = None
            for R in range(len(word_list)):
                if word_list[R] == word0 or word_list[R] == word1:
                    if L is not None and word_list[R] != word_list[L]:
                        ans = min(ans, R - L - 1)
                    L = R
            return -1 if ans == len(word_list) else ans
    
    ob = Solution()
    text = "cat dog abcd dog cat cat abcd dog wxyz"
    word0 = "abcd"
    word1 = "wxyz"
    print(ob.solve(text, word0, word1))

    Đầu vào

    "cat dog abcd dog cat cat abcd dog wxyz", "abcd", "wxyz"

    Đầu ra

    1