Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ระยะห่างที่เล็กที่สุดระหว่างคำสองคำใน Python


สมมติว่าเรามีสองสตริง 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
  • คืนค่า -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