L1-023 輸出GPLT (20 分)

作者: 陳越

單位: 浙江大學

時間限制: 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;
}

 

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