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

สแตกสำหรับจับคู่วงเล็บ

ตรวจสอบวงเล็บด้วยสแตก

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

เข้าทีหลัง ออกก่อน

สแตก คือกองที่สมาชิกตัวสุดท้ายที่คุณเพิ่มเข้าไปจะเป็นสมาชิกแรกที่นำออกมา เช่นเดียวกับการวางจานซ้อนกัน 🍽️

ลิสต์ของ Python คือสแตก

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

stack = []

เพิ่มด้วย append

หากต้องการเพิ่มสมาชิกไว้ด้านบนของสแตก ให้เรียกใช้ append ซึ่งจะวางค่าไว้ท้ายลิสต์ด้วยเวลา O(1)

stack.append('(')
stack.append('[')

นำออกจากด้านบน

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

top = stack.pop()  # removes '['

ดูค่าโดยไม่นำออก

หากต้องการดูสมาชิกด้านบนโดยไม่นำออก เพียงอ่านค่า stack[-1] การดูค่านี้มีประโยชน์ก่อนตัดสินใจใช้ pop

if stack:
    top = stack[-1]

ตรวจสอบว่าว่างเสมอ

การใช้ pop กับสแตกว่างจะทำให้เกิดข้อผิดพลาด ดังนั้นให้ตรวจสอบ if stack ก่อนใช้ pop ทุกครั้ง เพื่อให้วิธีแก้ปัญหาของคุณไม่หยุดทำงาน

แนวคิดการจับคู่วงเล็บ

วงเล็บซ้อนกันได้อย่างเป็นธรรมชาติ จึงเหมาะกับการใช้สแตก ให้ใส่วงเล็บเปิดทุกตัวลงในสแตก แล้ววงเล็บ ปิด แต่ละตัวต้องตรงกับสมาชิกด้านบนของสแตก

จับคู่ตัวปิดกับตัวเปิด

สร้าง พจนานุกรม ขนาดเล็กที่จับคู่วงเล็บปิดแต่ละตัวกับวงเล็บเปิดที่ควรตรงกัน วิธีตรวจสอบจะได้อ่านง่าย

pairs = {')': '(', ']': '[', '}': '{'}

ไล่ตรวจแล้วตัดสินใจ

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

for c in s:
    if c in pairs.values():
        stack.append(c)

ไม่ตรงกันหมายถึงไม่ถูกต้อง

หากวงเล็บเปิดที่นำออกมาไม่ตรงกัน หรือสแตกว่างในตอนที่ต้องใช้ วงเล็บชุดนั้นจะเป็นสตริงที่ ไม่ถูกต้อง ทันที

    elif not stack or stack.pop() != pairs[c]:
        return False

สแตกว่างเมื่อจบการตรวจ

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

return not stack

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

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

สรุป: สแตกจัดการวงเล็บได้

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

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

บทเรียน “สแตกสำหรับจับคู่วงเล็บ” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “สแตกสำหรับจับคู่วงเล็บ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ 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 ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “สแตกสำหรับจับคู่วงเล็บ” ใช้เวลานานแค่ไหน

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

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

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

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

  1. สแตกสำหรับจับคู่วงเล็บ
  2. สแตกโมโนโทน: สมาชิกที่มากกว่าถัดไป
  3. คิวและ collections.deque
  4. ค่าสูงสุดในหน้าต่างเลื่อนด้วยดีค
← กลับไปที่ Coding Interview Prep