把x,t,C,p,c的出现次数记录下来,前提是每个字母出现的的次数小于前面的时候,才加一,以此来保证序列的顺序
#include<stdio.h>
#include<string.h>
char s[200010];
int b[200010];
int main()
{
int i,n,a1,a2,a3,a4,a5,len,count;
while(~scanf("%d",&n))
{
a1=a2=a3=a4=a5=0;
scanf("%s",s);
len=strlen(s);
count=0;
for(i=0;i<len;i++)
{
if(s[i]= =‘x’)
a1++;
if(s[i]= =‘t’&&a2<a1)
a2++;
if(s[i]= =‘C’&&a3<a2)
a3++;
if(s[i]= =‘p’&&a4<a3)
a4++;
if(s[i]==‘c’&&a5<a4)
a5++;
if(a1&&a2&&a3&&a4&&a5)
{
count++;//序列出现次数加一,各字母数减一
a1–;
a2–;
a3–;
a4–;
a5–;
}
}
printf("%d\n",count);
}
return 0;
}