เมื่อสองสตริงมีอักขระเหมือนกัน แต่จัดเรียงในลำดับที่ต่างกัน จะเรียกว่าแอนนาแกรม ตัวอย่างเช่น spot และ post เป็นแอนนาแกรมเนื่องจากมีตัวอักษรเดียวกันที่สร้างคำต่างกัน ในบทความนี้เราจะมาดูกันว่าเราจะตรวจสอบได้อย่างไรว่าสองสตริงเป็นแอนนาแกรมของกันและกันหรือไม่
สำหรับสิ่งนี้เราใช้โมดูลหลามที่เรียกว่าคอลเลกชัน ใช้เพื่อจัดเก็บคอลเลกชั่นของข้อมูล เช่น list, dict, set, tuple เป็นต้น นี่เป็นตัวอย่างของคอลเล็กชันในตัว ฟังก์ชัน ตัวนับ() เพียงนับจำนวนครั้งที่องค์ประกอบมีอยู่ในคอลเลกชัน และส่งกลับผลลัพธ์เป็นพจนานุกรมที่แสดงองค์ประกอบและการนับ ดังนั้น หากสตริงสองสตริงมีจำนวนอักขระแต่ละตัวตรงกัน เราจะถือว่าสตริงนั้นเป็นแอนนาแกรม
ตัวอย่าง
from collections import Counter StringA = 'top spot' StringB = 'pot post' # Print the elements as adictionary print Counter(StringA) print Counter(StringB) # Compare the dictionaries 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