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

การตรวจสอบ Anagram ใน Python ด้วย collections.Counter()

เมื่อสตริงสองตัวมีตัวอักษรเหมือนกันแต่เรียงลำดับต่างกัน เราเรียกว่าเป็น Anagram (คำทับศัพท์) ตัวอย่างเช่น spot และ post เป็น anagram เพราะมีตัวอักษรเหมือนกันแต่สร้างคำต่างกัน ในบทความนี้ เราจะดูว่าจะตรวจสอบได้อย่างไรว่าสตริงสองตัวเป็น anagram ของกันหรือไม่

สำหรับสิ่งนี้ เราใช้โมดูล python ที่ชื่อ collections โมดูลเหล่านี้ใช้เก็บคอลเลกชันของข้อมูล เช่น list, dict, set, tuple เป็นต้น นี่เป็นตัวอย่างของ built-in collections ฟังก์ชัน counter() เพียงแค่นับจำนวนครั้งที่องค์ประกอบปรากฏในคอลเลกชันและคืนค่าผลลัพธ์เป็น dictionary แสดงองค์ประกอบและจำนวนนับ ดังนั้น หากสตริงสองตัวมีจำนวนนับของแต่ละตัวอักษรที่ตรงกัน เราจะถือว่าเป็น anagram

ตัวอย่าง

from collections import Counter

StringA = 'top spot'
StringB = 'pot post'

# พิมพ์องค์ประกอบเป็น dictionary
print(Counter(StringA))
print(Counter(StringB))

# เปรียบเทียบ dictionary
if Counter(StringA) == Counter(StringB):
    print('StringA and StringB are Anagrams')

ผลลัพธ์

การรันโค้ดข้างต้นจะได้ผลลัพธ์ดังนี้:

Counter({'p': 2, 't': 2, 'o': 2, 's': 1, ' ': 1})
Counter({'p': 2, 't': 2, 'o': 2, 's': 1, ' ': 1})
StringA and StringB are Anagrams