轰击者 pat basic 练习四十三 输出PATest

心得:

 

当希望map能按照特定模板输出时,

1.可以将这个模板存下来,

2.模板的每一个值作为map的key,其次序作为map的value,次序从1开始,这样可以和不需要的字符区分(不需要的字符其值为0)

3.一般每一个值还会要求输出一定的个数,可以在声明一个数组,次序当索引,个数为值

如:期望能按照"qwerqwerwe"的方式输出,

模板string temp="qwerqwerwe"

声明一个map,值为key次序为value,即m['q']=1;m['w']=2;m['e']=3;m['r']=4

再来一个count数组记录个数,count[1]=2;count[2]=3;count[3]=3;count[4]=2;

输出时遍历count数组个数

需要两个循环,while和for,外层的while保证了全部输出,for作用是一遍一遍地按照次序输出

while(true)
{
    bool is_outing=false;
    for(int i=1;i<5;i++)
    {
        if(count[i]!=0)
        {
            is_outing=true;//count[i]不等于0说明此时还有输出
            cout<<temp[i-1];//输出模板对应位置上的字符值
            count[i]--;
        }
    }
    if(!is_outing)//当没输出了就跳出while循环
       break;
}

 

题目:

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

输入格式:

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

输出格式:

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

输入样例:

redlesPayBestPATTopTeePHPereatitAPPT

 

输出样例:

PATestPATestPTetPTePePee

 

代码:

#include<iostream>
#include<map>
#include<vector>
using namespace std;
int main()
{
    string test,temp="PATest";
    map<char,int> m;
    m['P']=1;m['A']=2;m['T']=3;m['e']=4;m['s']=5;m['t']=6;
    int coun[7]={};
    cin>>test;
    for(int i=0;i<test.size();i++)
    {
        if(m[test.at(i)]!=0)
            coun[m[test.at(i)]]++;
    }
    while(true)
    {
        bool is_outing=false;
        for(int i=1;i<7;i++)
        {
            if(coun[i]!=0)
            {
                is_outing=true;
                cout<<temp[i-1];
                coun[i]--;
            }
        }
        if(!is_outing)
            break;
    }
    return 0;
}

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值