1. 程式人生 > >PTA天梯賽練習集 L1-023 輸出GPLT (20 分)

PTA天梯賽練習集 L1-023 輸出GPLT (20 分)

題目描述:

給定一個長度不超過10000的、僅由英文字母構成的字串。請將字元重新調整順序,按GPLTGPLT…這樣的順序輸出,並忽略其它字元。當然,四種字元(不區分大小寫)的個數不一定是一樣多的,若某種字元已經輸出完,則餘下的字元仍按GPLT的順序列印,直到所有字元都被輸出。

輸入格式:

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

輸出格式:

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

輸入樣例:

pcTclnGloRgLrtLhgljkLhGFauPewSKgt

輸出樣例:

GPLTGPLTGLTGLGLL

解題思路:

先定義一個數組,用於統計“gplt”的個數,然後每輸出一次,對應字母的個數少一次

程式碼實現:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int num[4] = {0};
    int max_num;
    string str,gplt="GPLT";
    getline(cin,str);
    for (int i = 0; str[i]!='\0';i++)
    {
        if (str[i]=='g'||str[i]=='G')
            num[0]++;
        if (str[i]=='p'||str[i]=='P')
            num[
1]++; if (str[i]=='l'||str[i]=='L') num[2]++; if (str[i]=='t'||str[i]=='T') num[3]++; } while (1) { for (int i = 0; i < 4; i++) { if (num[i]>=1) { cout << gplt[i]; num[
i]--; } } if (num[1]+num[2]+num[3]+num[0]==0) break;//所有字元都被輸出 } }