สมมติว่าเรามีชื่อบริษัทเป็นสตริง เราต้องหาอักขระสามตัวที่พบบ่อยที่สุดจากชื่อบริษัทและแสดงโดยทำตามกฎเหล่านี้ −
- เลือกตัวอักษรสามตัวที่ใช้บ่อยที่สุด
- เรียงลำดับจากมากไปหาน้อย
- หากความถี่ของอักขระบางตัวเท่ากัน ให้เรียงลำดับตามตัวอักษร
ดังนั้น หากอินพุตเป็น s ="TUTORIALSPOINT" ผลลัพธ์จะเป็น [[3, 'T'], [2, 'I'], [2, 'O']]
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- x :=แผนที่ที่มีตัวอักษรและความถี่ของตัวอักษรใน s
- res :=รายการใหม่
- สำหรับแต่ละ i ใน x ทำ
- ใส่คู่ (x[i], i) ลงใน ret
- res :=res หลังจากจัดเรียงตามลำดับตัวอักษร
- res :=res หลังจากจัดเรียงตามความถี่ในลำดับย้อนกลับ
- ส่งคืนสามรายการแรกจาก res
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น
from collections import Counter def solve(s): x = Counter(s) res = [] for i in x: res.append([x[i], i]) res = sorted(res, key=lambda cnt: cnt[1]) res = sorted(res, key=lambda cnt: cnt[0], reverse=True) return res[:3] s = "TUTORIALSPOINT" print(solve(s))
อินพุต
"TUTORIALSPOINT"
ผลลัพธ์
[[3, 'T'], [2, 'I'], [2, 'O']]