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