ในบทความนี้ เราจะอภิบายวิธีการลบสมาชิกที่อยู่ระหว่างสองศูนย์จากสตริงที่กำหนดซึ่งประกอบด้วยตัวอักษร '0' และ '1' เท่านั้น สตริงสุดท้ายไม่ควรมีตัวอักษร '1' ที่ถูกล้อมรอบด้วย '0' เช่น:
Input : string = "110010" Output : "11000" Explanation: พบ 1 ระหว่างสองศูนย์ที่ index ที่ 4 Input : string = "0010" Output : "000" Explanation : พบ 1 ระหว่างสองศูนย์ที่ index ที่ 2
แนวทางแก้ปัญหา
เราสามารถใช้วิธีง่ายๆ คือวนลูปผ่านสตริง ตรวจสอบสมาชิกก่อนหน้าและถัดไปว่เป็นศูนย์หรือไม่ หากใช่ และสมาชิกปัจจุบันคือ '1' ให้ลบสมาชิกนั้นออก แล้วอัปเดตความยาวและพิมพ์สตริงใหม่
ตัวอย่างโค้ด
#include <bits/stdc++.h>
using namespace std;
int main() {
string str = "110010";
int length = str.length();
for (int i = 1; i < length - 1; i++) {
// ตรวจสอบสมาชิกระหว่างสองศูนย์
if ((str.at(i - 1) == '0' && str.at(i + 1) == '0')) {
// ลบสมาชิกถ้าพบระหว่างสอง 0
str.erase(i, 1);
i--;
if (i > 0 && str.at(i - 1) == '0')
i--;
// อัปเดตความยาวหลังลบ
length = str.length();
}
}
cout << "String after removing elements between the two zeros: " << str;
return 0;
}
ผลลัพธ์
String after removing elements between the two zeros: 1100
การทำงานของโค้ด
- ใช้ลูปเดินจาก index 1 ถึง (length - 1)
- ตรวจสอบ index ก่อนหน้าและถัดไปว่เป็น '0' หรือไม่
- ลบตัวอักษรที่ index นั้นถ้าเป็น '1'
- อัปเดตตัวแปร length ใหม่
- สุดท้ายพิมพ์สตริงที่อัปเดตแล้ว
สรุป
ในบทความนี้ เราอภิบายการลบสมาชิกระหว่างสองศูนย์จากสตริงที่มีแค่ '0' และ '1' พร้อมโค้ด C++ สามารถเขียนในภาษาอื่นได้เช่น C, Java, Python หวังว่าจะเป็นประโยชน์