ปัญหา
ให้สตริง s และ t ตรวจสอบว่าสลับตัวอักษรของ s ได้ t หรือไม่ (คือ anagram)
ตัวอย่าง
s = "worldlloeh", t = "helloworld" → ทั้งคู่มีตัวอักษร h,e,l,l,o,w,o,r,l,d เท่ากัน → True
แนวคิดการแก้ปัญหา
- ถ้าความยาวต่างกัน → False
- นับความถี่ตัวอักษรใน s
- ลบความถี่ตามตัวอักษรใน 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