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

โปรแกรมตรวจสอบสตริงที่ต่างกันที่ตำแหน่งเดียวกัน (Python)

โจทย์

มีอาร์เรย์ของสตริงที่มีความยาวเท่ากัน ต้องการตรวจสอบว่ามีคู่สตริงใดคู่หนึ่งที่ต่างกันเพียงตัวอักษรเดียวที่ ตำแหน่งเดียวกัน หรือไม่ ถ้ามีคืน True ไม่งั้น False

ตัวอย่าง: dict = ['pqrs', 'prqs', 'paqs'] → True เพราะทุกคู่ต่างกันที่ดัชนี 1

อัลกอริธึม

  1. สร้าง Set seens เก็บสตริงที่ "มาสก์" ตัวอักษรทีละตำแหน่ง
  2. วนแต่ละคำ สร้าง masked_word โดยแทนที่ตัวอักษรตำแหน่ง i ด้วย '.'
  3. ถ้า masked_word อยู่ใน seens แล้ว → คืน True
  4. จบลูปไม่พบ → คืน False

โค้ด Python

def solve(dict):
    seens = set()
    for word in dict:
        for i, c in enumerate(word):
            masked_word = word[:i] + '.' + word[i+1:]
            if masked_word in seens:
                return True
            else:
                seens.add(masked_word)
    return False

print(solve(['pqrs', 'prqs', 'paqs']))  # Output: True

Input / Output

Input:  ['pqrs', 'prqs', 'paqs']
Output: True