题目链接:1043 输出PATest (20 point(s))
题目描述
给定一个长度不超过 104 的、仅由英文字母构成的字符串。请将字符重新调整顺序,按 PATestPATest… 这样的顺序输出,并忽略其它字符。当然,六种字符的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按 PATest 的顺序打印,直到所有字符都被输出。
输入格式
输入在一行中给出一个长度不超过 104 的、仅由英文字母构成的非空字符串。
输出格式
在一行中按题目要求输出排序后的字符串。题目保证输出非空。
输入样例
redlesPayBestPATTopTeePHPereatitAPPT
输出样例
PATestPATestPTetPTePePee
Java代码
/*********************************************************************************
Submit Time Status Score Problem Compiler Run Time User
7/26/2019, 16:19:12 Accepted 20 1043 Java (openjdk) 96 ms wowpH
*********************************************************************************/
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
int numP = 0, numA = 0, numT = 0, nume = 0, nums = 0, numt = 0;
for (int i = 0; i < s.length(); ++i) { // 统计PATest字符的个数
char ch = s.charAt(i);
if ('P' == ch) {
++numP;
} else if ('A' == ch) {
++numA;
} else if ('T' == ch) {
++numT;
} else if ('e' == ch) {
++nume;
} else if ('s' == ch) {
++nums;
} else if ('t' == ch) {
++numt;
}
}
boolean end = false; // 结束标志
while (false == end) {
if (0 == numP && 0 == numA && 0 == numT) {
if (0 == nume && 0 == nums && 0 == numt) {
end = true; // 所有字符个数均为0,设为结束
}
}
if ((numP--) > 0) { // 字符'P'还未输出完
System.out.print('P'); // 输出字符'P'
}
if ((numA--) > 0) {
System.out.print('A');
}
if ((numT--) > 0) {
System.out.print('T');
}
if ((nume--) > 0) {
System.out.print('e');
}
if ((nums--) > 0) {
System.out.print('s');
}
if ((numt--) > 0) {
System.out.print('t');
}
}
}
}