给定一个长度不超过10000的、仅由英文字母构成的字符串。请将字符重新调整顺序,按“PATestPATest....”这样的顺序输出,并忽略其它字符。当然,六种字符的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按PATest的顺序打印,直到所有字符都被输出。
输入格式:
输入在一行中给出一个长度不超过10000的、仅由英文字母构成的非空字符串。
输出格式:
在一行中按题目要求输出排序后的字符串。题目保证输出非空。
输入样例:redlesPayBestPATTopTeePHPereatitAPPT输出样例:
PATestPATestPTetPTePePee
解:
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str = in.next();
in.close();
int[] a = new int[6];
int len = str.length();
for (int i = 0; i < len; i++) {
char c = str.charAt(i);
if (c == 'P' || c == 'A' || c == 'T' || c == 'e' || c == 's' || c == 't') {
if (c == 'P')
a[0]++;
else if (c == 'A')
a[1]++;
else if (c == 'T')
a[2]++;
else if (c == 'e')
a[3]++;
else if (c == 's')
a[4]++;
else if (c == 't')
a[5]++;
}
}
int min = 99999;
for (int i = 0; i < 6; i++) {
if (a[i] < min) {
min = a[i];
}
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < min; i++) {
sb.append("PATest");
}
while (a[0] != min || a[1] != min || a[2] != min || a[3] != min || a[4] != min || a[5] != min) {
if (a[0] > min) {
sb.append("P");
a[0]--;
}
if (a[1] > min) {
sb.append("A");
a[1]--;
}
if (a[2] > min) {
sb.append("T");
a[2]--;
}
if (a[3] > min) {
sb.append("e");
a[3]--;
}
if (a[4] > min) {
sb.append("s");
a[4]--;
}
if (a[5] > min) {
sb.append("t");
a[5]--;
}
}
System.out.println(sb);
}
}
本文介绍了一种特殊的字符串排序算法,该算法能将特定的英文字母(P、A、T、e、s、t)按‘PATest’的顺序进行排序并输出。通过统计这些字符出现的次数,并使用StringBuilder构建输出字符串,确保输出格式符合要求。
2939

被折叠的 条评论
为什么被折叠?



