使用 C++ 删除两个零之间的元素

在本文中,我们将讨论如何从仅包含零和一个字符的给定字符串中删除两个零之间的元素。最后的字符串不应包含任何被 0 包围的字符“1”。例如 -

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++) {
      // 检查两个零之间的元素
      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 << "删除两个零之间的元素后的字符串: " << str;
   return 0;
}
输出结果
删除两个零之间的元素后的字符串: 1100

理解代码

  • 循环用于遍历从索引 1 到 (length - 1) 的字符串。

  • 检查第 i 个索引的上一个和下一个索引是否等于 '0'。

  • 如果该字符为“1”,则从该索引中删除该字符。

  • 使用新变量更新长度变量。

  • 最后在循环结束后打印更新的字符串。

结论

在本文中,我们讨论了从包含“0”和“1”字符的字符串中删除两个零之间的元素。我们还看到了一个 C++ 程序来解决同样的问题;我们可以用任何其他语言(如 C、java、python 等)编写此程序。希望本文对您有所帮助。