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

โปรแกรมหาระยะห่างน้อยที่สุดระหว่างสองคำในข้อความใน Python

การหาระยะห่างน้อยที่สุดระหว่างสองคำในข้อความ

กำหนดข้อความ text และคำ w1, w2 หาระยะห่างน้อยที่สุด (จำนวนคำระหว่าง) ระหว่าง w1 และ w2 ถ้าไม่มีคืน -1

อัลกอริทึม

  1. แยก text เป็นคำด้วย split()
  2. เก็บ index ล่าสุดของ w1 (index1) และ w2 (index2)
  3. วนลูปแต่ละคำพร้อม index
  4. เจอ w1: ถ้ามี index2 แล้ว คำนวณระยะห่าง = |idx - index2| - 1 อัปเดตค่าน้อยสุด
  5. เจอ w2: ถ้ามี index1 แล้ว คำนวณระยะห่าง = |idx - index1| - 1 อัปเดตค่าน้อยสุด
  6. อัปเดต index1 หรือ index2 ตามที่เจอ
  7. ถ้าพบทั้งคู่ คืนค่าระยะห่างน้อยสุด ไม่เช่นนั้น -1

ตัวอย่างโค้ด

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))

ผลลัพธ์

1

คำอธิบาย

คำว่า "power" และ "limit" มีคำ "happy" อยู่ระหว่างกัน 1 คำ → ระยะห่าง = 1