1043 输出PATest
1043 输出PATest
转跳点:🐏
1043 输出PATest
给定一个长度不超过 104 的、仅由英文字母构成的字符串。请将字符重新调整顺序,按 PATestPATest....
这样的顺序输出,并忽略其它字符。当然,六种字符的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按 PATest 的顺序打印,直到所有字符都被输出。
输入格式:
输入在一行中给出一个长度不超过 104 的、仅由英文字母构成的非空字符串。
输出格式:
在一行中按题目要求输出排序后的字符串。题目保证输出非空。
输入样例:
redlesPayBestPATTopTeePHPereatitAPPT
输出样例:
PATestPATestPTetPTePePee
这道题也是个计数的题目,分别统计下6个字母的个数,写一个统计函数,写一个输出函数,每次输出的时候都判断一下退出条件,所以还需要一个退出条件的函数。题目比较简单,所以就讲一下退出条件ε=ε=ε=(~ ̄▽ ̄)~。
题目可以知道,每一次输出必须先检查完毕所有的字母,才能进行下一次输出,所以我们结束输出的可能只有一种啦┏ (゜ω゜)=☞ 6个字母都为0的情况啦~,检查退出的函数就是超简单的循环,有非0值就返回的函数la~
AC代码:
#include <stdio.h> #include <stdlib.h> //退出条件 int cheak0(int arr[]); //记录函数 void record(int arr[], char ch); //输出函数 void print(int arr[]); int main(void) { char ch; int count[6] = {0}; while ((ch = getchar()) != '\n') { record(count, ch); } while (cheak0(count)) { print(count); } return 0; } int cheak0(int arr[]) { for (int i = 0; i < 6; i++) { if (arr[i]) { return 1; } } return 0; } void record(int arr[], char ch) { switch (ch) { case 'P': arr[0]++; break; case 'A': arr[1]++; break; case 'T': arr[2]++; break; case 'e': arr[3]++; break; case 's': arr[4]++; break; case 't': arr[5]++; break; } } void print(int arr[]) { for (int j = 0; j < 6; j++) { if (arr[j]) { switch (j) { case 0: printf("P"); arr[0]--; break; case 1: printf("A"); arr[1]--; break; case 2: printf("T"); arr[2]--; break; case 3: printf("e"); arr[3]--; break; case 4: printf("s"); arr[4]--; break; case 5: printf("t"); arr[5]--; break; } } } }
PTA不易,诸君共勉!
大道五十,天衍四九,人遁其一!