Computer >> Máy Tính >  >> Lập trình >> Python

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

Giả sử chúng ta có hai chuỗi, word0 và word1 và một văn bản. Chúng ta phải tìm khoảng cách nhỏ nhất giữa hai lần xuất hiện bất kỳ của word0 và word1 trong văn bản đã cho. Đây là khoảng cách được đo bằng số từ. Nếu chúng không có trong văn bản thì trả về -1.

Vì vậy, nếu đầu vào là text ="cat dog abcd dog cat cat abcd dog wxyz", word0 ="abcd", word1 ="wxyz", thì đầu ra sẽ là 1, vì có một từ "dog" giữa " abcd "và" wxyz "

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • word_list:=danh sách các từ trong văn bản
  • ans:=kích thước của word_list
  • L:=null
  • đối với R trong phạm vi 0 đến kích thước của word_list - 1, thực hiện
    • nếu word_list [R] là word0 hoặc word_list [R] là word1, thì
      • nếu L không phải là null và word_list [R] không phải là word_list [L], thì
        • ans:=tối thiểu là ans và R - L - 1
      • L:=R
  • trả về -1 nếu ans giống với kích thước của word_list, ngược lại là ans

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

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