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

โปรแกรมหาตัวอักษรที่พบมากที่สุด 3 อันดับจากชื่อบริษัทใน Python

สมมติว่าเรามีชื่อบริษัทเป็นสตริง เราต้องหาตัวอักษรที่พบบ่อยที่สุด 3 ตัว และแสดงตามกฎ:

  • เลือกตัวอักษรที่มีความถี่มากที่สุด 3 อันดับ
  • จัดเรียงตามความถี่มากไปน้อย
  • ถ้าความถี่เท่ากัน เรียงตามลำดับตัวอักษร

ตัวอย่างเช่น หาก s = "TUTORIALSPOINT" ผลลัพธ์จะเป็น [[3, 'T'], [2, 'I'], [2, 'O']]

ขั้นตอนการแก้ปัญหา

  • x := map ที่เก็บตัวอักษรและความถี่ใน s (ใช้ Counter)
  • res := รายการใหม่
  • สำหรับแต่ละ i ใน x: เพิ่มคู่ (x[i], i) เข้าไปใน res
  • res := เรียงตามตัวอักษร (key=lambda cnt: cnt[1])
  • res := เรียงตามความถี่มากไปน้อย (key=lambda cnt: cnt[0], reverse=True)
  • คืนค่า 3 รายการแรกจาก 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']]