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

本文作者:Jimmy-LEEE

本文链接:https://www.cnblogs.com/redacted-area/p/18379519

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Jimmy-LEEE  阅读(9)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起