ตรวจสอบพาลินโดรมอย่างถูกต้อง
เปรียบเทียบจากทั้งสองด้านอย่างมีประสิทธิภาพ
ตรวจสอบพาลินโดรมอย่างถูกต้อง เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- เทคนิค Characters, ord และ chr
- นับตัวอักษรด้วยตารางความถี่
- ตรวจสอบพาลินโดรมอย่างถูกต้อง
- แยก ตัดช่องว่าง และประกอบคำใหม่