PAT(B) 1043 输出PATest(Java)统计

题目链接:1043 输出PATest (20 point(s))

题目描述

给定一个长度不超过 10​4​​ 的、仅由英文字母构成的字符串。请将字符重新调整顺序,按 PATestPATest… 这样的顺序输出,并忽略其它字符。当然,六种字符的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按 PATest 的顺序打印,直到所有字符都被输出。

输入格式

输入在一行中给出一个长度不超过 10​4​​ 的、仅由英文字母构成的非空字符串。

输出格式

在一行中按题目要求输出排序后的字符串。题目保证输出非空。

输入样例

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');
			}
		}
	}
}
posted @ 2019-07-26 16:42  wowpH  阅读(208)  评论(0编辑  收藏  举报