[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 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步