寒假Day46:CodeForces1321CRemove Adjacent字符串+思维

题目链接:CodeForces - 1321E 

题意:给出一串长度为n的字符串,遍历整个字符串,若该字符的前或后一个字符是字典序在该字符在字典序的前一位,就可以删除

问:最多能够删除多少个

思路:如果直接遍历暴力判断,第一组样例就可以看出不对

所以最优选择就是从z开始到a去遍历整个字符串

给两组另外样例:

10

bbbbbbabbb

10

bbbbbbbbbb

AC代码:

#include<bits/stdc++.h>
using namespace std;

int main()
{
    int n;
    string a;
    while(cin>>n)
    {
        cin>>a;
        int ans=0;
        for(int i='z'; i>='a'; i--)
        {
            for(int j=0; j<n; j++)
            {
                if(a[j]==i)
                {
                    if((j>=1&&(a[j-1]+1==i))||(j<=n-2&&a[j+1]+1==i))
                    {
                        a.erase(j,1);
                        ans++;
                        n--;
                        j=-1;
                    }
                }

            }
        }
        cout<<ans<<endl;
    }
    return 0;
}
原文地址:https://www.cnblogs.com/OFSHK/p/12450689.html