สมมติว่าเรามีรายการสตริงพิมพ์เล็กชื่อ words ที่แต่ละคำมีความยาวเท่ากัน เราต้องตรวจสอบว่ามีสตริงสองตัวที่ต่างกันเพียงตัวอักษรเดียวหรือไม่
เช่น ถ้าอินพุตคือ words = ["seed", "pick", "lick", "root", "live"] ผลลัพธ์จะเป็น True เพราะ "pick" และ "lick" คล้ายกันเกือบเหมือนกัน
ขั้นตอนการแก้ปัญหา
s := เซตใหม่- สำหรับแต่ละ
wordในwords:- สำหรับแต่ละดัชนี
iและตัวอักษรwในword:- ถ้า
word[:i] + "*" + word[i+1:]อยู่ในsคืนค่าTrue - มิฉะนั้น เพิ่ม
word[:i] + "*" + word[i+1:]เข้าs
- ถ้า
- สำหรับแต่ละดัชนี
- คืนค่า
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