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

Chương trình tìm khoảng cách nhỏ nhất giữa hai từ cho trước trong văn bản trong Python


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

Vì vậy, nếu đầu vào là text = "joy happy power happy joy joy power happy limit" w1 = "power" w2 = "limit", thì đầu ra sẽ là 1, vì chỉ có một từ "happy" ở giữa power và limit.

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

  • index1 := null, index2 := null

  • distance := 999999

  • với mỗi chỉ số idx và từ w trong text, thực hiện

    • nếu w giống w1, thì

      • nếu index2 không phải null, thì distance := min(distance, |idx - index2| - 1)

      • index1 := idx

    • nếu w giống w2, thì

      • nếu index1 không phải null, thì distance := min(distance, |idx - index1| - 1)

      • index2 := idx

  • nếu index1 không null và index2 không null, thì trả về distance

  • trả về -1

Ví dụ

Hãy xem 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