[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';
}
}

浙公网安备 33010602011771号