给定一个由 n� 个小写字母构成的字符串。
现在,需要删掉其中的一些字母,使得字符串中不存在连续三个或三个以上的 x
。
请问,最少需要删掉多少个字母?
如果字符串本来就不存在连续的三个或三个以上 x
,则无需删掉任何字母。
输入格式
第一行包含整数 n�。
第二行包含一个长度为 n� 的由小写字母构成的字符串。
输出格式
输出最少需要删掉的字母个数。
数据范围
3≤n≤100
#include <iostream>
using namespace std;
const int N = 110;
char str[N];
int n,res;
int main()
{
cin >> n >> str;
for(int i =0;i<=n;i++)
{
if(str[i]=='x')
{
int j = i+1; //此处新开j变量统计长度,方便快捷
while(j < n)
{
if(str[j]!='x') break;
j++;
}
res += max(j-i-2,0);
i = j;
}
}
cout << res;
}
总结:
双指针法,i满足条件,定义j变量遍历i+1 --数组尾,直到不满足条件,此时 (j - i)即为长度,寻找下一个时直接从 i = j 开始
表示无穷大 0x3F3F3F3F 无穷小 0xC0C0C0C0
防止scanf读入回车之类的值,可加上%*C 解决
认真读题!