作者: 陳越
單位: 浙江大學
時間限制: 150 ms
內存限制: 64 MB
代碼長度限制: 16 KB
給定一個長度不超過10000的、僅由英文字母構成的字符串。請將字符重新調整順序,按GPLTGPLT....
這樣的順序輸出,並忽略其它字符。當然,四種字符(不區分大小寫)的個數不一定是一樣多的,若某種字符已經輸出完,則餘下的字符仍按GPLT
的順序打印,直到所有字符都被輸出。
輸入格式:
輸入在一行中給出一個長度不超過10000的、僅由英文字母構成的非空字符串。
輸出格式:
在一行中按題目要求輸出排序後的字符串。題目保證輸出非空。
輸入樣例:
pcTclnGloRgLrtLhgljkLhGFauPewSKgt
輸出樣例:
GPLTGPLTGLTGLGLL
源碼:
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int main(){
char a[10001];
int b[4] = {0}; //記錄四個字符的個數
scanf("%s",a);
for(int i=0; i<strlen(a); i++){
if(a[i] == 'G' || a[i] == 'g'){
b[0]++;
continue;
}
if(a[i] == 'P' || a[i] == 'p'){
b[1]++;
continue;
}
if(a[i] == 'L' || a[i] == 'l'){
b[2]++;
continue;
}
if(a[i] == 'T' || a[i] == 't') b[3]++;
}
int sum = b[0] + b[1] + b[2] + b[3];
while(sum){
if(b[0]){
printf("G");
b[0]--;
sum--;
}
if(b[1]){
printf("P");
b[1]--;
sum--;
}
if(b[2]){
printf("L");
b[2]--;
sum--;
}
if(b[3]){
printf("T");
b[3]--;
sum--;
}
}
return 0;
}