思路:
给定长度为n的字符串,规定操作——
某一字符的前一位或者后一位的字符在字典序中比它小一,那么就可以删除这个字符,问最多可以删除多少个字符
贪心思路,每次按字典序递减的顺序从字符串内查找进行删除处理,进行递归就可以得到最大操作数
ll n,t,s;
char x[1000010];
int main() {
scanf("%lld\n",&n);
cin>>x;
s=0;
for(int i=25; i>0; i--) {
char y=i+'a',z=i-1+'a';
for(int j=0; j<n; j++) {
if(x[j]==y) {
int l=j-1,r=j+1;
while(x[l]=='?'||x[l]==y) {
l--;
}
if(l>=0) {
if(x[l]==z) {
s++;
x[j]='?';
continue;
}
}
while(x[r]=='?'||x[r]==y) {
r++;
}
if(r<n) {
if(x[r]==z) {
s++;
x[j]='?';
}
}
}
}
}
cout<<s<<endl;
}