最少删除0,使字符串成为'好'字符串 - C++实现

问题描述:

给定一个仅包含0和1的字符串S,请问最少删掉多少个0,可以使得S成为'好'的字符串。

'好'的字符串指所有1连在一起的字符串,如 0, 1, 00111 和 01111100 是'好'的。

0101, 100001 和 11111111111101 则不是'好'的字符串。

输入格式

一行,一个字符串,保证字符串仅包含0、1。

输出格式

一行,包含一个整数,表示最少删除0的个数。

C++代码实现:

#include <iostream>
#include <string>

using namespace std;

int minDeletions(string s) {
    int count = 0;
    int maxCount = 0;
    
    for(int i = 0; i < s.length(); i++) {
        if(s[i] == '1') {
            count++;
            maxCount = max(maxCount, count);
        } else {
            count = 0;
        }
    }
    
    return s.length() - maxCount;
}

int main() {
    string s;
    cin >> s;
    
    int result = minDeletions(s);
    cout << result << endl;
    
    return 0;
}

代码解释:

  1. 遍历字符串s,记录连续出现的1的个数(count)。
  2. 每次遇到'1',将count加1,并更新最大连续1的个数(maxCount)。
  3. 遇到'0'时,将count重置为0。
  4. 最后返回字符串的长度减去最大连续1的个数,即为最少删除0的个数。

示例:

输入: 0101

输出: 2

解释:

删除两个0,字符串变为11,成为'好'的字符串。

总结:

本文提供了一种C++代码实现,用于求解最少删除0,使字符串成为'好'字符串的问题。该代码简单易懂,并提供示例说明。

最少删除0,使字符串成为'好'字符串 - C++实现

原文地址: https://www.cveoy.top/t/topic/p94m 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录