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

ตรวจสอบว่าสลับตัวอักษรในสตริงหนึ่งได้อีกสตริงหนึ่งหรือไม่ (Anagram) ใน Python


ปัญหา

ให้สตริง s และ t ตรวจสอบว่าสลับตัวอักษรของ s ได้ t หรือไม่ (คือ anagram)

ตัวอย่าง

s = "worldlloeh", t = "helloworld" → ทั้งคู่มีตัวอักษร h,e,l,l,o,w,o,r,l,d เท่ากัน → True

แนวคิดการแก้ปัญหา

  1. ถ้าความยาวต่างกัน → False
  2. นับความถี่ตัวอักษรใน s
  3. ลบความถี่ตามตัวอักษรใน t → ถ้ามีค่าติดลบ → False

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

from collections import Counter

def solve(s, t):
    if len(s) != len(t):
        return False
    return Counter(s) == Counter(t)

# หรือแบบ manual
def solve_manual(s, t):
    if len(s) != len(t):
        return False
    freq = {}
    for ch in s:
        freq[ch] = freq.get(ch, 0) + 1
    for ch in t:
        if ch not in freq or freq[ch] == 0:
            return False
        freq[ch] -= 1
    return True

print(solve("worldlloeh", "helloworld"))  # True

อินพุต / เอาต์พุต

Input:  "worldlloeh", "helloworld"
Output: True