คำชี้แจงปัญหา
ด้วยสตริงไบนารี ภารกิจคือการนับขั้นตอนขั้นต่ำเพื่อลบสตริงย่อย 010 ออกจากสตริงไบนารีนี้
ตัวอย่าง
หากสตริงอินพุตคือ 010010 จำเป็นต้องมี 2 ขั้นตอน
- แปลง 0 เป็น 1 แรก ตอนนี้สตริงจะกลายเป็น 110010
- แปลง 0 สุดท้ายเป็น 1 ตอนนี้สตริงสุดท้ายกลายเป็น 110011
อัลกอริทึม
<ก่อน>1. วนซ้ำสตริงจากดัชนี 0 sto n-22 หากในสตริงไบนารีมีอักขระสามตัวติดต่อกันคือ '0', '1', '0' อักขระใดตัวหนึ่งสามารถเปลี่ยนได้เพิ่มตัวนับลูป 2ตัวอย่าง
#includeใช้เนมสเปซ std;int getMinSteps (สตริง str) { int cnt =0; สำหรับ (int i =0; i เมื่อคุณคอมไพล์และรันโปรแกรมข้างต้น มันสร้างผลลัพธ์ดังต่อไปนี้
ผลลัพธ์
ขั้นตอนที่จำเป็นขั้นต่ำ =2