【PAT】1043.输出PATest

【PAT】1043.输出PATest

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

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

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

输入样例
redlesPayBestPATTopTeePHPereatitAPPT

输出样例
PATestPATestPTetPTePePee

题解

哈希表:

import java.util.Scanner;

//思路:开大数组,然后将出现过字符数+1
public class Solution{
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        //int t = 'z';
        //System.out.println(z);

        int[] PATest = new int[122+1]; // 字符的ASCII码是下标,最大下标是字符 'z'的值=122
        char[] line = in.next().toCharArray();
        for (int i = 0; i < line.length; i++) {
            // 用字符的ASCII码做下标
            PATest[line[i]]++;
        }

        // 当还有PATest字母时
        while (PATest['P'] > 0 || PATest['A'] > 0 || PATest['T'] > 0 || PATest['e'] > 0 || PATest['s'] > 0 || PATest['t'] > 0) {
            if (PATest['P'] > 0) {
                System.out.print("P");
                PATest['P']--;
            }
            if (PATest['A']-- > 0){
                System.out.print("A");
                PATest['A']--;
            }
            if (PATest['T']-- > 0) {
                System.out.print("T");
                PATest['T']--;
            }
            if (PATest['e']-- > 0) {
                System.out.print("e");
                PATest['e']--;
            }
            if (PATest['s']-- > 0) {
                System.out.print("s");
                PATest['s']--;
            }
            if (PATest['t']-- > 0) {
                System.out.print("t");
                PATest['t']--;
            }
        }
    }
}

你可能感兴趣的:(Java相关,#,力扣及OJ,算法,java)