题目描述
给定一个由 n 个小写字母构成的字符串。
现在,需要删掉其中的一些字母,使得字符串中不存在连续三个或三个以上的 x。
请问,最少需要删掉多少个字母?
如果字符串本来就不存在连续的三个或三个以上 x,则无需删掉任何字母。
C++ 代码
#include<iostream>
using namespace std;
char c[110];
int main()
{
int n,ans = 0;
cin>>n;
for(int i = 0;i < n;i ++) cin>>c[i];//读入字符
int sum = 0;
for(int i = 0;i < n;i += sum) //找到每组xxx...中第一个x位置
{
sum = 0;
if(c[i] == 'x') //遍历数组找到第一个x
{
for(int j = i;j < n;j ++) //得出x长度
if(c[j] == 'x') sum++;
else break;
if(sum >= 3) //满足>=3时计入答案
ans += sum - 2;
}
else sum = 1; //实现i++
}
cout<<ans<<endl;
return 0;
}