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

โปรแกรมตรวจสอบว่ามีคู่คำที่คล้ายกันเกือบเหมือนกันหรือไม่ใน Python

สมมติว่าเรามีรายการสตริงพิมพ์เล็กชื่อ words ที่แต่ละคำมีความยาวเท่ากัน เราต้องตรวจสอบว่ามีสตริงสองตัวที่ต่างกันเพียงตัวอักษรเดียวหรือไม่

เช่น ถ้าอินพุตคือ words = ["seed", "pick", "lick", "root", "live"] ผลลัพธ์จะเป็น True เพราะ "pick" และ "lick" คล้ายกันเกือบเหมือนกัน

ขั้นตอนการแก้ปัญหา

  1. s := เซตใหม่
  2. สำหรับแต่ละ word ใน words:
    • สำหรับแต่ละดัชนี i และตัวอักษร w ใน word:
      • ถ้า word[:i] + "*" + word[i+1:] อยู่ใน s คืนค่า True
      • มิฉะนั้น เพิ่ม word[:i] + "*" + word[i+1:] เข้า s
  3. คืนค่า False

ตัวอย่างการใช้งาน

def solve(words):
    s = set()
    for word in words:
        for i, w in enumerate(word):
            if word[:i] + "*" + word[i + 1:] in s:
                return True
            else:
                s.add(word[:i] + "*" + word[i + 1:])
    return False

words = ["seed", "pick", "lick", "root", "live"]
print(solve(words))

อินพุต

["seed", "pick", "lick", "root", "live"]

เอาต์พุต

True