最少删除0,使字符串成为'好'字符串 - C++实现
最少删除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;
}
代码解释:
- 遍历字符串s,记录连续出现的1的个数(count)。
- 每次遇到'1',将count加1,并更新最大连续1的个数(maxCount)。
- 遇到'0'时,将count重置为0。
- 最后返回字符串的长度减去最大连续1的个数,即为最少删除0的个数。
示例:
输入: 0101
输出: 2
解释:
删除两个0,字符串变为11,成为'好'的字符串。
总结:
本文提供了一种C++代码实现,用于求解最少删除0,使字符串成为'好'字符串的问题。该代码简单易懂,并提供示例说明。
原文地址: https://www.cveoy.top/t/topic/p94m 著作权归作者所有。请勿转载和采集!