您的位置:首页 > 其它

PAT乙级.1043. 输出PATest(20)

2016-09-03 11:42 316 查看

1043. 输出PATest(20)

题目

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

输入格式

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

输出格式

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

输入样例

redlesPayBestPATTopTeePHPereatitAPPT

输出样例

PATestPATestPTetPTePePee

PAT链接

思路

常规哈希表

代码

/**
* @tag     PAT_B_1043
* @authors R11happy (xushuai100@126.com)
* @date    2016-9-2 23:56-00:08
* @version 1.0
* @Language C++
* @Ranking  600/884
* @function null
*/

#include <cstdio>
#include <cstdlib>
#include <cstring>

const int Max = 10000;
int HashTable[128];

int main(int argc, char const *argv[])
{
int cnt = 0;    //记录最多输出几组
char str[Max+10];
gets(str);
int len = strlen(str);
for(int i = 0; i<len; i++)
{
HashTable[str[i]]++;
if(HashTable[str[i]] > cnt)  cnt = HashTable[str[i]];
}

for(int i = 0; i<cnt; i++)
{
if(HashTable['P'])
{
printf("P");
HashTable['P']--;
}
if(HashTable['A'])
{
printf("A");
HashTable['A']--;
}
if(HashTable['T'])
{
printf("T");
HashTable['T']--;
}
if(HashTable['e'])
{
printf("e");
HashTable['e']--;
}
if(HashTable['s'])
{
printf("s");
HashTable['s']--;
}
if(HashTable['t'])
{
printf("t");
HashTable['t']--;
}
}
return 0;
}


收获

也可以考虑将哈希表只局限在PATest这6个字符
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: