(乙)1043 輸出PATest (20 分)

題目:

給定一個長度不超過 10​4​​ 的、僅由英文字母構成的字符串。請將字符重新調整順序,按 PATestPATest.... 這樣的順序輸出,並忽略其它字符。當然,六種字符的個數不一定是一樣多的,若某種字符已經輸出完,則餘下的字符仍按 PATest 的順序打印,直到所有字符都被輸出。

輸入格式:

輸入在一行中給出一個長度不超過 10​4​​ 的、僅由英文字母構成的非空字符串。

輸出格式:

在一行中按題目要求輸出排序後的字符串。題目保證輸出非空。

輸入樣例:

redlesPayBestPATTopTeePHPereatitAPPT

輸出樣例:

PATestPATestPTetPTePePee

思路:

 題目很簡單,用心讀題就可以找到解題的思路;

代碼如下:

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;

char a[10100];
int P,A,T,e,s,t;

int main()
{
    scanf("%s",a);
    int l=strlen(a);
    P=A=T=e=s=t=0;//記錄每一個字母出現的次數;
    int maxx=0;
    for(int i=0; i<l; i++)
    {
        if(a[i]=='P')
            P++;
        else if(a[i]=='A')
            A++;
        else if(a[i]=='T')
            T++;
        else if(a[i]=='e')
            e++;
        else if(a[i]=='s')
            s++;
        else if(a[i]=='t')
            t++;
    }
    maxx=max(max(max(max(max(max(maxx,P),A),T),e),s),t);
    while(maxx--)
    {
        if(P!=0)
        {
            printf("P");
            P--;
        }
        if(A!=0)
        {
            printf("A");
            A--;
        }
        if(T!=0)
        {
            printf("T");
            T--;
        }
        if(e!=0)
        {
            printf("e");
            e--;
        }
        if(s!=0)
        {
            printf("s");
            s--;
        }
        if(t!=0)
        {
            printf("t");
            t--;
        }
    }
    printf("\n");
    return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章