1. 程式人生 > 其它 >L1-023 輸出GPLT (20分)

L1-023 輸出GPLT (20分)

技術標籤:CCCC刷題c++

L1-023 輸出GPLT (20分)

題目

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

輸入格式:

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

輸出格式:

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

輸入樣例:

pcTclnGloRgLrtLhgljkLhGFauPewSKgt

輸出樣例:

GPLTGPLTGLTGLGLL

思路

注意點:

  1. 大小寫不區分
  2. 四種字元(不區分大小寫)的個數不一定是一樣多的,若某種字元已經輸出完,則餘下的字元仍按GPLT的順序列印,直到所有字元都被輸出。

程式碼

#include<bits/stdc++.h>
#define INF 0x3f3f3f3f
#define PI acos(-1)
using namespace std;
typedef long long ll;
const int N = 2e5 + 9;
const ll mod = 1e9 + 7;

char str[N];

int main()
{
    cin >> str;
    int
n = strlen(str); int g = 0, p = 0, l = 0, t = 0; for(int i = 0; i < n; i++) { switch(str[i]) { case 'G': g++; break; case 'g': g++; break; case 'P': p++; break; case 'p'
: p++; break; case 'L': l++; break; case 'l': l++; break; case 'T': t++; break; case 't': t++; break; } } n = max(g, max(p, max(l, t))); for(int i = 0; i < n; i++) { if(g > 0) { cout << 'G'; g--; } if(p > 0) { cout << 'P'; p--; } if(l > 0) { cout << 'L'; l--; } if(t > 0) { cout << 'T'; t--; } } cout << endl; return 0; }