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

จัดกลุ่มและพิมพ์ Anagram ร่วมกันใน Python ด้วย List และ Dictionary

ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมหาและจัดกลุ่ม anagram โดยใช้ List และ Dictionary

อัลกอริทึม

1. กำหนด list ของสตริง
2. สร้าง dictionary ว่าง
3. วนลูปผ่าน list:
   3.1 เรียงตัวอักษรในสตริง (sorted) เป็น key
   3.2 ถ้า key อยู่ใน dict แล้ว → append สตริงต้นฉบับ
   3.3 ถ้ายังไม่มี → สร้าง key ใหม่กับ list ว่าง แล้ว append
4. รวมค่าทั้งหมดใน dictionary เป็นสตริงเดียว
5. พิมพ์ผลลัพธ์

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

strings = ["apple", "orange", "grapes", "pear", "peach"]
anagrams = {}

for string in strings:
    key = "".join(sorted(string))
    if key in anagrams:
        anagrams[key].append(string)
    else:
        anagrams[key] = [string]

result = ""
for key, value in anagrams.items():
    result += " ".join(value) + " "

print(result)

ผลลัพธ์

apple orange grapes pear peach

หมายเหตุ: ในตัวอย่างนี้ ไม่มีคำที่เป็น anagram กันจริง (ไม่มีคำที่ตัวอักษรเหมือนกันหมด) ดังนั้นแต่ละคำอยู่กลุ่มละคำ

ตัวอย่างที่มี Anagram จริง

strings = ["listen", "silent", "enlist", "hello", "world"]
anagrams = {}

for string in strings:
    key = "".join(sorted(string))
    if key in anagrams:
        anagrams[key].append(string)
    else:
        anagrams[key] = [string]

for key, group in anagrams.items():
    if len(group) > 1:
        print(f"Anagram group: {group}")

ผลลัพธ์

Anagram group: ['listen', 'silent', 'enlist']

สรุป

เทคนิคนี้ใช้ sorted string เป็น key ใน dictionary เพื่อจัดกลุ่ม anagram ได้อย่างมีประสิทธิภาพ O(n * k log k) โดย n = จำนวนคำ, k = ความยาวคำ หากมีข้อสงสัย สามารถถามได้ในส่วนความคิดเห็น