acwing 字符串删减

题目

给定一个由 n 个小写字母构成的字符串。

现在,需要删掉其中的一些字母,使得字符串中不存在连续三个或三个以上的 x

请问,最少需要删掉多少个字母?

如果字符串本来就不存在连续的三个或三个以上 x,则无需删掉任何字母。

输入格式

第一行包含整数 n。

第二行包含一个长度为 n 的由小写字母构成的字符串。

输出格式

输出最少需要删掉的字母个数。

数据范围

3≤n≤100

输入样例1:

6
xxxiii

输出样例1:

1

输入样例2:

5
xxoxx

输出样例2:

0

输入样例3:

10
xxxxxxxxxx

输出样例3:

8

题解

分析

  • 使用双指针算法,使i和j动态变化,如果差值大于等于2,count++,最后输出

代码

#include "iostream"
using namespace std;
const int N=100;
char num[N]={0};
int main(){
  int n,count=0;
  cin>>n;
  getchar();
  for(int i=0;i<n;i++){
      scanf("%c",num+i);
  }
  for(int i=0,j=0;j<n;j++){
      if(num[j]!='x')i=j+1;
      else if(j-i>=2)count++;
  }
  cout<<count;
}
posted @ 2023-02-16 21:32  Cheng_Mao  阅读(20)  评论(0)    收藏  举报