电话号码分身

对于数ZERO(Z) TWO(W) FOUR(U) SIX(X) EIGHT(G)括号里是标识这些数的特殊的字母,再把这些数都去掉后对于ONE(O),THREE(T),FIVE(F),SEVEN(S)括号里的是识别这几个数的特殊字母,最后NINE(I),特别注意N不行,因为有两个N。最后将所有数转换为原始值再从小到大排个序就ok了。


#include <cstdlib>
#include <cstdio>
#include<iostream>
#include <cstring>
#include<algorithm>
#include <vector>
using namespace std;
int main()
{
    int T;
    cin>>T;
    while(T--)
    {
        string s;
        cin>>s;
        vector<int> charnum(256);
        vector<int> num(10);
        vector<int> result;
        for(int i=0;i<s.size();i++)
        {
            charnum[s[i]]++;
        }
        num[0]=charnum['Z'];
        charnum['Z']=charnum['Z']-num[0];
        charnum['E']=charnum['E']-num[0];
        charnum['R']=charnum['R']-num[0];
        charnum['O']=charnum['O']-num[0];
        num[2]=charnum['W'];
        charnum['T']=charnum['T']-num[2];
        charnum['W']=charnum['W']-num[2];
        charnum['O']=charnum['O']-num[2];
        num[4]=charnum['U'];
        charnum['F']=charnum['F']-num[4];
        charnum['O']=charnum['O']-num[4];
        charnum['U']=charnum['U']-num[4];
        charnum['R']=charnum['R']-num[4];
        num[6]=charnum['X'];
        charnum['S']=charnum['S']-num[6];
        charnum['I']=charnum['I']-num[6];
        charnum['X']=charnum['X']-num[6];
        num[8]=charnum['G'];
        charnum['E']=charnum['E']-num[8];
        charnum['I']=charnum['I']-num[8];
        charnum['G']=charnum['G']-num[8];
        charnum['H']=charnum['H']-num[8];
        charnum['T']=charnum['T']-num[8];
        num[1]=charnum['O'];
        charnum['O']=charnum['O']-num[1];
        charnum['N']=charnum['N']-num[1];
        charnum['E']=charnum['E']-num[1];
        num[3]=charnum['T'];
        charnum['T']=charnum['T']-num[3];
        charnum['H']=charnum['H']-num[3];
        charnum['R']=charnum['R']-num[3];
        charnum['E']=charnum['E']-num[3];
        charnum['E']=charnum['E']-num[3];
        num[5]=charnum['F'];
        charnum['F']=charnum['F']-num[5];
        charnum['I']=charnum['I']-num[5];
        charnum['V']=charnum['V']-num[5];
        charnum['E']=charnum['E']-num[5];
        num[7]=charnum['S'];
        charnum['S']=charnum['S']-num[7];
        charnum['E']=charnum['E']-num[7];
        charnum['V']=charnum['V']-num[7];
        charnum['E']=charnum['E']-num[7];
        charnum['N']=charnum['N']-num[7];
        num[9]=charnum['I'];
        charnum['N']=charnum['N']-num[9];
        charnum['I']=charnum['I']-num[9];
        charnum['N']=charnum['N']-num[9];
        charnum['E']=charnum['E']-num[9];
        for(int i=0;i<10;i++)
        {
            for(int j=0;j<num[i];j++)
            {
                result.push_back((10+i-8)%10);
            }
        }
        sort(result.begin(),result.end());
        for(int i=0;i<result.size();i++)
            cout<<result[i];
        cout<<endl;
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值