ในบทความนี้ เราจะเรียนรู้เกี่ยวกับวิธีที่เราสามารถทำให้สตริงกลายเป็น pangram โดยใช้ฟังก์ชัน counter() ใน Python 3.x หรือเวอร์ชันก่อนหน้า เพื่อทำเช่นนั้น เราได้รับอนุญาตให้ลบตัวอักษรใดๆ จากอินพุตสตริง เราจะหาจำนวนตัวอักษรที่ต้องลบอย่างน้อยเพื่อทำให้สตริงกลายเป็น anagram
สองสตริงถูกกล่าวว่าเป็น anagram ของกันและกันเมื่อพวกมันมีตัวอักษรชนิดเดียวกันในลำดับสุ่มใดๆ
เมธอด counter() อยู่ในโมดูล collections ที่มีใน Python ข้อกำหนดเบื้องต้นคือต้อง import โมดูล collections เพื่อใช้ฟังก์ชัน counter()
อัลกอริทึม
1. แปลงอินพุตสตริงเป็นประเภท dictionary ที่มีตัวอักษรเป็น keys และความถี่เป็น values โดยใช้ Counter(inp_str) ในโมดูล collections 2. นับจำนวน keys ทั้งหมด และนับจำนวน keys ที่ซ้ำกันในทั้งสอง dictionary ที่แปลงมาจากอินพุตสตริง 3. ถ้าไม่พบ common keys หมายความว่าต้องลบ (ผลรวมของความยาวทั้งสอง dictionary) ตัวอักษรจากทั้งสองอินพุตสตริง 4. มิฉะนั้น (max(ความยาวทั้งสอง dictionary) - จำนวน common keys ที่มีอยู่) จะให้จำนวนตัวอักษรที่ต้องลบที่จำเป็น
collections.Counter เป็น subclass ของ dictionary เพื่อให้แน่ใจว่าตัวอักษรถูกนับโดยอัตโนมัติโดย interpreter เราไม่จำเป็นต้องสร้าง substring หรือตรวจสอบว่าพวกมันเป็น anagram ด้วยตนเอง
ตัวอย่าง
# สองสตริงกลายเป็น anagram
from collections import Counter
def convertAnagram(str_1, str_2):
# การแปลงสตริงเป็น dictionary type
dict_1 = Counter(str_1)
dict_2 = Counter(str_2)
keys_1 = dict_1.keys()
keys_2 = dict_2.keys()
# นับจำนวน keys ในทั้งสองลิสต์ของ keys
count_1 = len(keys_1)
count_2 = len(keys_2)
# แปลงคู่ของ keys เป็น set เพื่อหา common keys
set_1 = set(keys_1)
commonKeys = len(set_1.intersection(keys_2))
if (commonKeys == 0): # ไม่พบสิ่งทั่วไป คือ ทุกอย่างแตกต่างกัน
return (count_1 + count_2)
else: # บางองค์ประกอบตรงกันในอินพุต
return (max(count_1, count_2) - commonKeys)
str_1 = 'Tutorials'
str_2 = 'sTutalori'
str_3 = 'Point'
print(convertAnagram(str_1, str_2))
print(convertAnagram(str_3, str_2))
ผลลัพธ์
0 6
สรุป
ในบทความนี้ เราได้เรียนรู้วิธีที่เราสามารถทำให้สตริงสองตัวกลายเป็น anagram ของกันและกันโดยการนับจำนวนตัวอักษรที่จำเป็นสำหรับการรักษาความสัมพันธ์ anagram ใน Python 2.x ที่จำเป็น