首页 > 其他 > 详细

PAT Basic 1043 输出PATest (20分)

时间:2020-01-28 12:00:27      阅读:114      评论:0      收藏:0      [点我收藏+]

题目

给定?个?度不超过10000的、仅由英?字?构成的字符串。请将字符重新调整顺序,按“PATestPATest….”这样的顺序输出,并忽略其它字符。当然,六种字符的个数不?定是?样多的,若某种字符已经输出完,则余下的字符仍按PATest的顺序打印,直到所有字符都被输出。
输?格式:
输?在??中给出?个?度不超过10000的、仅由英?字?构成的?空字符串。
输出格式:
在??中按题?要求输出排序后的字符串。题?保证输出?空。
输?样例:
redlesPayBestPATTopTeePHPereatitAPPT
输出样例:
PATestPATestPTetPTePePee

题目分析

  1. 散列统计PATest每二个字母出现次数,记录在unordered_map中
  2. 循环打印PATest(若字母存在次数-1并打印,若字母不存在不打印)
  3. 使用标记,记录是否PATest出现次数都已为0,退出循环

code


#include <iostream>
#include <string>
#include <unordered_map>
using namespace std;
int main(int argc, char * argv[]) {
    string s;
    getline(cin,s);
    unordered_map<char, int> m;
    for(int i=0; i<s.length(); i++) {
        m[s[i]]++;
    }
    bool flag = true;
    while(flag) {
        flag = false;
        if(m['P']-->0)printf("P"),flag=true;
        if(m['A']-->0)printf("A"),flag=true;
        if(m['T']-->0)printf("T"),flag=true;
        if(m['e']-->0)printf("e"),flag=true;
        if(m['s']-->0)printf("s"),flag=true;
        if(m['t']-->0)printf("t"),flag=true;
    }
    return 0;
}

PAT Basic 1043 输出PATest (20分)

原文:https://www.cnblogs.com/houzm/p/12237665.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!