Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

การลบองค์ประกอบระหว่างสองศูนย์โดยใช้ C ++


ในบทความนี้ เราจะพูดถึงวิธีการลบองค์ประกอบระหว่างศูนย์สองตัวออกจากสตริงที่กำหนดซึ่งมีเฉพาะตัวศูนย์และตัวหนึ่งเท่านั้น สตริงสุดท้ายไม่ควรมีอักขระ '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 เป็นต้น หวังว่าบทความนี้จะเป็นประโยชน์