(colorbox{Orange}{贪心策略:每次挑选字典序最大的删除.})
(那为什么呢?)
(回顾一下题目,当且仅当有比自己小1的字母在附近才能把自己删去)
(color{Red}{字典序最大的字母永远不会作为其他字母的辅助字母删去其他字母})
(比如当前最大字典序字母是d,因为d只能协助e,没有e,d就是废物)
(d在中间,只会阻挡两边的字母相互消去,所以删去d)
#include <bits/stdc++.h>
using namespace std;
int n;
string s;
bool sovle()
{
for(int i=25;i>=0;i--)
{
char w=char(i+'a');
for(int j=0;j<s.length();j++)
{
if(s[j]!=w) continue;
if(j!=0&&s[j-1]==w-1)
{
s.erase(j,1);
return true;
}
if(j!=s.length()-1&&s[j+1]==w-1)
{
s.erase(j,1);
return true;
}
}
}
return false;
}
int main()
{
int ans=0;
cin>>n>>s;
//先从最大的开始消灭起
while(sovle()) ans++;
cout<<ans;
}