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

Chương trình tìm khoảng cách tối thiểu của hai từ nhất định trong một văn bản bằng Python

Giả sử chúng ta có ba chuỗi văn bản, w1 và w2. Văn bản là một câu với các từ khác nhau. 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 w1 và w2 trong văn bản, khoảng cách được đo bằng số từ ở giữa chúng. Nếu w1 hoặc w2 không có trong văn bản, hãy trả về -1.

Vì vậy, nếu đầu vào giống như text ="joy happy power hạnh phúc niềm vui niềm vui sức mạnh hạnh phúc giới hạn" w1 ="power" w2 ="limit", thì đầu ra sẽ là 1, vì chỉ có một từ "happy" ở giữa quyền lực và giới hạn.

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

  • index1:=null, index2:=null

  • khoảng cách:=999999

  • đối với mỗi idx chỉ mục và từ w trong văn bản, hãy thực hiện

    • nếu w giống với w1 thì

      • nếu index2 không rỗng thì

        • khoảng cách:=khoảng cách tối thiểu và (| idx - index2 | - 1)

      • index1:=idx

    • nếu w giống với w2 thì

      • nếu index1 không rỗng thì

        • khoảng cách:=khoảng cách tối thiểu và (| idx - index1 | - 1)

      • index2:=idx

  • nếu index1 không null và index2 không null thì

    • khoảng cách trở lại

  • trả về -1

Ví dụ

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

def solve(text, w1, w2):
   index1 = None
   index2 = None
   distance = 2000000
   for idx, word in enumerate(text.split(" ")):
      if word == w1:
         if index2 is not None:
            distance = min(distance, abs(idx - index2) - 1)
         index1 = idx
      if word == w2:
         if index1 is not None:
            distance = min(distance, abs(idx - index1) - 1)
         index2 = idx
   if index1 is not None and index2 is not None:
      return distance
   return -1

text = "joy happy power happy joy joy power happy limit"
w1 = "power"
w2 = "limit"
print(solve(text, w1, w2))

Đầu vào

"joy happy power happy joy joy power happy limit", "power", "limit"

Đầu ra

1