สมมติว่าเรามีสองสตริง word0 และ word1 และข้อความ เราต้องหาระยะห่างที่น้อยที่สุดระหว่าง word0 กับ word1 สองรายการในข้อความที่กำหนด ที่นี่ระยะทางวัดเป็นจำนวนคำ หากไม่มีอยู่ในข้อความ ให้คืนค่า -1
ดังนั้น หากอินพุตเป็น text ="cat dog abcd dog cat cat abcd dog wxyz", word0 ="abcd", word1 ="wxyz" ผลลัพธ์จะเป็น 1 เนื่องจากมีคำว่า "dog" อยู่ระหว่าง " abcd" และ "wxyz"
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- word_list :=รายการคำศัพท์จากข้อความ
- ans :=ขนาดของ word_list
- L :=null
- สำหรับ R ในช่วง 0 ถึงขนาดของ word_list - 1 ทำ
- ถ้า word_list[R] คือ word0 หรือ word_list[R] คือ word1 แล้ว
- ถ้า L ไม่เป็นค่าว่าง และ word_list[R] ไม่ใช่ word_list[L] ดังนั้น
- ans :=ขั้นต่ำของ ans และ R - L - 1
- L :=R
- ถ้า L ไม่เป็นค่าว่าง และ word_list[R] ไม่ใช่ word_list[L] ดังนั้น
- ถ้า word_list[R] คือ word0 หรือ word_list[R] คือ word1 แล้ว
- คืนค่า -1 ถ้า ans เท่ากับขนาดของ word_list มิฉะนั้น ans
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
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))
อินพุต
"cat dog abcd dog cat cat abcd dog wxyz", "abcd", "wxyz"
ผลลัพธ์
1