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

ตรวจสอบพาลินโดรมอย่างถูกต้อง

เปรียบเทียบจากทั้งสองด้านอย่างมีประสิทธิภาพ

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

พาลินโดรมคืออะไร

พาลินโดรมอ่านจากหน้าไปหลังหรือหลังไปหน้าก็เหมือนกัน เช่น racecar หรือ level การตรวจสอบพาลินโดรมเป็นโจทย์ฝึกพื้นฐานที่พบได้บ่อย 🔁

เคล็ดลับการใช้สไลซ์

Python สามารถกลับสตริงได้ด้วยสไลซ์ s[::-1] เปรียบเทียบกับสตริงเดิม ก็จะตรวจสอบได้ในบรรทัดเดียว

s = 'level'
print(s == s[::-1])  # True

สไลซ์ใช้หน่วยความจำเพิ่ม

วิธีใช้สไลซ์เขียนสั้น แต่จะสร้างสำเนาที่กลับลำดับทั้งชุด สำหรับสตริงขนาดใหญ่มาก หน่วยความจำส่วนเกินนี้อาจสำคัญเมื่อมีข้อจำกัดเข้มงวด

วิธีใช้ตัวชี้สองตัว

วางตัวชี้ตัวหนึ่งไว้ที่ต้นสตริง และอีกตัวไว้ที่ท้ายสตริง เปรียบเทียบแล้วขยับตัวชี้เข้าหากัน วิธีนี้ใช้พื้นที่เพิ่มเติม O(1)

i, j = 0, len(s) - 1
while i < j:
    if s[i] != s[j]:
        break
    i += 1; j -= 1

หยุดตรงกลาง

ตัวชี้ทั้งสองจำเป็นต้องขยับมาพบกันเพียงครึ่งทาง เมื่อi ไม่น้อยกว่า j แสดงว่าคู่ทั้งหมดตรงกันและสตริงนั้นเป็นพาลินโดรม

ถ้าไม่ตรงกันให้หยุดก่อน

ลูปตัวชี้สองตัวสามารถคืนค่า False ได้ทันทีที่พบคู่ที่แตกต่างกัน คุณแทบไม่ต้องตรวจดูสตริงทั้งชุด จึงช่วยเพิ่มความเร็วได้ดี

def is_pal(s):
    i, j = 0, len(s) - 1
    while i < j:
        if s[i] != s[j]: return False
        i += 1; j -= 1
    return True

ทั้งสองวิธีใช้เวลา O(n)

ไม่ว่าจะใช้วิธีใด คุณจะแตะอักขระแต่ละตัวไม่เกินหนึ่งครั้ง ดังนั้นทั้งสองวิธีจึงทำงานด้วยเวลาเชิงเส้น ต่างกันเพียงหน่วยความจำเพิ่มเติมที่ใช้

ปรับรูปแบบให้เป็นมาตรฐานก่อน

หลายปัญหาไม่สนใจตัวพิมพ์เล็กใหญ่และช่องว่าง ให้ทำความสะอาดสตริงก่อนด้วยการเปลี่ยนเป็นตัวพิมพ์เล็ก และเก็บไว้เฉพาะตัวอักษรกับตัวเลข

raw = 'A man, a plan'
clean = ''.join(c.lower() for c in raw if c.isalnum())

จากนั้นตรวจสอบสตริงที่ทำความสะอาดแล้ว

เมื่อปรับรูปแบบแล้ว ให้ใช้การตรวจสอบพาลินโดรมตามปกติกับสตริงที่ทำความสะอาดแล้ว นี่คือรูปแบบมาตรฐานสำหรับพาลินโดรมที่เป็นประโยค

print(clean == clean[::-1])

ตัวชี้จะข้ามอักขระที่ไม่ใช่ตัวอักษร

แทนที่จะทำความสะอาดก่อน ตัวชี้สองตัวสามารถข้ามอักขระที่ไม่ใช่ตัวอักษรหรือตัวเลขได้ทันที วิธีนี้ไม่ต้องสร้างสตริงชุดที่สองเลย

พาลินโดรมภายในส่วนย่อยของสตริง

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

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

คำถามหนึ่งข้อเกี่ยวกับการตรวจสอบพาลินโดรม

ทบทวน

ตอนนี้คุณสามารถตรวจสอบพาลินโดรมด้วยสไลซ์ที่รวดเร็ว หรือตัวชี้สองตัวที่ใช้หน่วยความจำน้อย และปรับข้อมูลนำเข้าที่ไม่เป็นระเบียบให้เป็นมาตรฐานก่อนตรวจสอบได้ 🎉

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

บทเรียน “ตรวจสอบพาลินโดรมอย่างถูกต้อง” ฟรีหรือไม่

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

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

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

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

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

บทเรียน “ตรวจสอบพาลินโดรมอย่างถูกต้อง” ใช้เวลานานแค่ไหน

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

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

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

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

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