WWW记录一下
Wiki with Fake AKGPLT
链接:https://ac.nowcoder.com/acm/contest/13276/F
来源:牛客网
题目描述
有nn个字符串,每个字符串只包含大写字母A-ZA−Z,且每个字符串的字符个数不超过100000100000个,现在你可以对每个字符串进行如下操作:
交换字符串ss中任意相邻位置的两个字符,经过零次或者多次交换以后,要使得s>"AKGPLT"s>“AKGPLT”(字典序排序)。
请你输出最少的交换次数;如果无论怎么交换都无法满足题目要求,则输出-1−1。
输入描述:
第一行输入一个正整数nn,表示测试数据的组数(1<=n<=100)(1<=n<=100)
接下来输入nn个字符串,每个字符串占一行,表示一组测试数据
输出描述:
针对每个字符串输出其对应的最少交换次数,输出一个换一行
示例1
输入
3
ACGPLT
BKGPLT
A
输出
1
0
-1
#include<iostream>
#include<string>
using namespace std;
int main() {
int n;
cin >> n;
string temple = "AKGPLT";
string s;
int min[5] = { 0 };
int m = 0;
int goal = -1;
while (n--) {
cin >> s;
bool f = true;
for (int i = 0; i < s.length(); ++i) {
if (i >= 2 && s[i] > 'K') {
cout << i - 1 << endl;
f = false;
break;
}
if (s[i] != 'A') {
cout << i << endl;
f = false;
break;
}
}
if (f) cout << -1 << endl;
}
}