W
e
l
c
o
m
e
: )

[AGC048A] atcoder < S 题解

题目

[AGC048A] atcoder < S

分析

观察目标字符串,发现对于 atcoder 这个字符串,第一位 a 是最小的字符,而第二位 t 是最大的字符。容易得到一个贪心思路。

  • 找到第一个大于 a 的,然后和第一位交换。
  • 找到第一个大于 t 的,然后和第二位交换。

考虑两种特殊情况。

  • 本身就大于 atcoder,直接输出 0
  • 本身全都是 a,输出 -1

Code

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

string tmp;
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    int t;
    cin>>t;
    while(t--)
    {
        cin>>tmp;
        if(tmp>"atcoder") {cout<<"0\n"; continue;}
        int ans=0x3f3f3f3f;
        for(int i=0;i<tmp.size();i++)
            if(tmp[i]>'a') 
                {ans=min(ans, i);break;}
        if(ans==0x3f3f3f3f) {cout<<"-1\n"; continue;}
        for(int i=1;i<tmp.size();i++)
            if(tmp[i]>'t') 
                {ans=min(ans, i-1);break;}
        cout<<ans<<'\n';
    }
}
posted @ 2024-08-25 20:54  Jimmy-LEEE  阅读(30)  评论(0)    收藏  举报