อัลกอริทึมการค้นหาสตริงใช้เพื่อค้นหาการเกิดขึ้นของรูปแบบเฉพาะ(สตริงย่อย) ภายในข้อความขนาดใหญ่(สตริง) อัลกอริทึมนี้มีบทบาทสำคัญในการประมวลผลข้อความ การค้นหา และการจัดการงานต่างๆ
มันทำงานอย่างไร
- เริ่มต้นด้วยข้อความ(สตริง) และรูปแบบ(สตริงย่อย) เพื่อค้นหา
- วนซ้ำข้อความทีละอักขระ
- สำหรับอักขระแต่ละตัวในข้อความ ให้เปรียบเทียบกับอักขระตัวแรกของรูปแบบ
- หากมีการจับคู่ ให้ตรวจสอบว่าอักขระที่ตามมาตรงกับรูปแบบหรือไม่
- หากรูปแบบตรงกันทั้งหมด ให้บันทึกตำแหน่งเริ่มต้นของการแข่งขัน
- ค้นหารูปแบบในข้อความต่อไป
ตัวอย่าง
พิจารณาข้อความ: "ababcababcabc" และรูปแบบ: "abc"
- เริ่มต้นที่ตำแหน่ง 0 เปรียบเทียบ "a" กับอักขระตัวแรก "a" ในรูปแบบ
- พบการจับคู่ ย้ายไปยังอักขระถัดไป: "b" กับ "b" และ "a" กับ "c"
- จับคู่ต่อไป: "b" กับ "a", "a" กับ "b" และ "b" กับ "c"
- การแข่งขันล้มเหลวในตำแหน่ง 2
- เริ่มต้นอีกครั้งที่ตำแหน่ง 3 เปรียบเทียบ "a" กับอักขระตัวแรก "a" ในรูปแบบ
- การจับคู่ที่ประสบความสำเร็จ: "a" กับ "a", "b" กับ "b" และ "c" กับ "c"
- ตำแหน่งบันทึก3.
พบรูปแบบ "abc" ที่ตำแหน่ง 0, 6 และ 9
ตัวอย่างโค้ดในภาษา C++
ในตัวอย่างนี้ stringSearch
ฟังก์ชันนี้ใช้เพื่อค้นหาการเกิดขึ้นของรูปแบบ "abc" ภายในข้อความ "ababcababcabcc" ผลลัพธ์จะเป็นเวกเตอร์ที่มีตำแหน่งเริ่มต้นของการแข่งขัน