PTA天梯賽練習集 L1-023 輸出GPLT (20 分)
阿新 • • 發佈:2018-12-18
題目描述:
給定一個長度不超過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;//所有字元都被輸出
}
}