前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >1043 输出PATest (20 分)

1043 输出PATest (20 分)

作者头像
可爱见见
发布2019-10-09 16:16:25
3750
发布2019-10-09 16:16:25
举报
文章被收录于专栏:卡尼慕卡尼慕

1043 输出PATest (20 分)

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

输入格式:

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

输出格式:

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

输入样例:

代码语言:javascript
复制
redlesPayBestPATTopTeePHPereatitAPPT

输出样例:

代码语言:javascript
复制
PATestPATestPTetPTePePee

【我的代码】

代码语言:javascript
复制
// 1043 输出PATest (20 分).cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <string>
using namespace std;
int main()
{
    //输入
    string a;
    int aa[6] = { 0 };
    int count = 0;
    getline(cin, a);
    int i = 0;
    for (; i < a.length(); i++) {
        if (a[i] == 'P') {
            aa[0]++;
            count++;
        }
        else if (a[i] == 'A') {
            count++;
            aa[1]++;
        }
        else if (a[i] == 'T') {
            count++;
            aa[2]++;
        }
        else if (a[i] == 'e') {
            aa[3]++;
            count++;
        }
        else if (a[i] == 's') {
            aa[4]++;
            count++;
        }
        else if (a[i] == 't') {
            aa[5]++;
            count++;
        }

    }
    //处理
    int j = 0;
    for (; count != 0;) {
        if (aa[j] != 0) {
            if (j == 0)
                cout << "P";
            if (j == 1)
                cout << "A";
            if (j == 2)
                cout << "T";
            if (j == 3)
                cout << "e";
            if (j == 4)
                cout << "s";
            if (j == 5)
                cout << "t";
            aa[j]--;
            count--;
        }
        if (j == 5)
            j = 0;
        else
            j++;
    }
}

【网上代码】

代码语言:javascript
复制
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
    int mapp[128] ={0},c;
    while((c=cin.get())!=EOF) mapp[c]++;
    while(mapp['P']>0||mapp['A']>0||mapp['T']>0||mapp['e']>0||mapp['s']>0||mapp['t']>0){
        if(mapp['P']-->0) cout<<'P';
        if(mapp['A']-->0) cout<<'A';
        if(mapp['T']-->0) cout<<'T';
        if(mapp['e']-->0) cout<<'e';
        if(mapp['s']-->0) cout<<'s';
        if(mapp['t']-->0) cout<<'t';
    }
    return 0;
}

【思路】

转化为数组处理就会发现所有条件均可满足,可能没有处理好,代码有点冗余,不过已经是最快时间完成的了。

对比了一下别人的代码,看到有一个稍短一点的,同样也是使用数组完成的,但是他这样做法会浪费很多空间,实际上使用的空间为仅有6个int,然而申请了128个int,ummm,有利有弊。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 卡尼慕 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 输入格式:
  • 输出格式:
  • 输入样例:
  • 输出样例:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档