0Pricing
Coding Interview Prep · บทเรียน

นับตัวอักษรด้วยตารางความถี่

นับตัวอักษรโดยใช้ dict หรืออาร์เรย์

นับตัวอักษรด้วยตารางความถี่ เป็นบทเรียน Coding Interview Prep ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Coding Interview Prep และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Coding Interview Prep มีบทเรียนทั้งหมด 4 บทเรียน

เหตุใดจึงต้องนับอักขระ

ปัญหาเกี่ยวกับสตริงจำนวนมากสรุปได้เป็นคำถามเดียวว่า อักขระแต่ละตัวปรากฏบ่อยเพียงใด ตารางความถี่จะตอบคำถามนี้ได้ด้วยการตรวจดูเพียงรอบเดียว 📊

วิธีใช้พจนานุกรม

dict แบบพื้นฐานจะจับคู่อักขระแต่ละตัวกับจำนวนครั้งที่พบ ใช้ได้กับชุดตัวอักษรทุกแบบ รวมถึงยูนิโค้ดและสัญลักษณ์

freq = {}
for ch in 'apple':
    freq[ch] = freq.get(ch, 0) + 1
print(freq)

get() หลีกเลี่ยง KeyError

การใช้ get(ch, 0) จะคืนค่า 0 เมื่อไม่พบคีย์ ดังนั้นครั้งแรกที่พบตัวอักษรจึงเริ่มนับได้อย่างถูกต้องที่หนึ่ง

Counter จัดการให้คุณ

คลาส Counter จาก collections จะสร้างตารางทั้งหมดให้ในบรรทัดเดียว เป็นตัวเลือกยอดนิยมในการแข่งขันเพราะทั้งเร็วและอ่านเข้าใจง่าย

from collections import Counter
freq = Counter('apple')
print(freq['p'])  # 2

คีย์ที่ไม่พบจะคืนค่าศูนย์

Counter จะไม่ทำให้เกิดข้อผิดพลาดเมื่อไม่พบคีย์ การขอตัวอักษรที่ไม่เคยพบจะให้ค่า 0 ทำให้โค้ดไม่ต้องแยกแขนง

from collections import Counter
c = Counter('abc')
print(c['z'])  # 0

วิธีใช้อาร์เรย์ขนาดคงที่

หากมีเฉพาะตัวอักษรพิมพ์เล็ก ลิสต์ขนาด 26 ช่องจะเร็วกว่าเดิม ใช้การคำนวณจาก ord เพื่อหาดัชนีตัวอักษร แล้วเพิ่มตัวนับ

cnt = [0] * 26
for ch in 'apple':
    cnt[ord(ch) - ord('a')] += 1

ข้อแลกเปลี่ยนระหว่างอาร์เรย์กับพจนานุกรม

อาร์เรย์เร็วที่สุด แต่เหมาะเฉพาะกับชุดตัวอักษรขนาดเล็กที่ทราบแน่นอน ส่วนพจนานุกรมหรือ Counter รองรับอักขระทุกแบบโดยแลกกับต้นทุนเล็กน้อย

ค้นหาค่าที่พบบ่อยที่สุด

Counter มี most_common(k) ซึ่งคืนอักขระ k อันดับแรกที่เรียงตามความถี่ไว้แล้ว ไม่ต้องเรียงลำดับด้วยตนเอง

from collections import Counter
print(Counter('mississippi').most_common(1))

เปรียบเทียบตารางสองตาราง

สตริงสองชุดเป็นแอนาแกรมก็ต่อเมื่อตารางความถี่ของทั้งคู่ตรงกัน การเปรียบเทียบ Counter สองตัวทำได้ในบรรทัดเดียว

from collections import Counter
print(Counter('listen') == Counter('silent'))  # True

วนรอบเดียวก็เพียงพอ

การสร้างตารางใช้เวลา O(n) ซึ่งเป็นการตรวจดูสตริงเพียงครั้งเดียว หลังจากนั้นการค้นหาแต่ละครั้งจะใช้เวลาคงที่

ลบเพื่อหาส่วนที่เกิน

Counter รองรับการลบ คุณจึงตรวจพบได้ว่าสตริงหนึ่งมีอักขระใดที่อีกสตริงไม่มี เหมาะสำหรับโจทย์ลักษณะการสร้างข้อความจากตัวอักษรที่มีอยู่

from collections import Counter
print(Counter('aabb') - Counter('ab'))

ตรวจสอบอย่างรวดเร็ว

คำถามหนึ่งข้อเกี่ยวกับการนับอักขระ

ทบทวน

ตอนนี้คุณสามารถนับอักขระด้วยdict ด้วย Counter หรือด้วยอาร์เรย์ขนาด 26 ช่อง และใช้ตารางเหล่านี้ตรวจสอบแอนาแกรมหรือค้นหาตัวอักษรที่พบบ่อยได้ 🎉

คำถามที่พบบ่อย

บทเรียน “นับตัวอักษรด้วยตารางความถี่” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “นับตัวอักษรด้วยตารางความถี่” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Coding Interview Prep ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Coding Interview Prep มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “นับตัวอักษรด้วยตารางความถี่”

นับตัวอักษรโดยใช้ dict หรืออาร์เรย์ คุณปฏิบัติ Coding Interview Prep ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Coding Interview Prep หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Coding Interview Prep บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “นับตัวอักษรด้วยตารางความถี่” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Coding Interview Prep นี้ได้ไหม

ได้ บทเรียน Coding Interview Prep ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. เทคนิค Characters, ord และ chr
  2. นับตัวอักษรด้วยตารางความถี่
  3. ตรวจสอบพาลินโดรมอย่างถูกต้อง
  4. แยก ตัดช่องว่าง และประกอบคำใหม่
← กลับไปที่ Coding Interview Prep