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