建民打卡日记5.10

一、问题描述

给定一个长度不超过10000的、仅由英文字母构成的字符串。请将字符重新调整顺序,按GPLTGPLT....这样的顺序输出,并忽略其它字符。当然,四种字符(不区分大小写)的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按GPLT的顺序打印,直到所有字符都被输出

二、流程设计

字符重新调整顺序,

三、代码实现

#include <bits/stdc++.h>
using namespace std;

int main() {
	int a[4] = {0};
	string kk;
	cin >> kk;
	for (int i = 0; i < kk.length(); i++) {
		char k;
		k = kk[i];
		if (k == 'G' || k == 'g')
			a[0] += 1;
		if (k == 'P' || k == 'p')
			a[1] += 1;
		if (k == 'L' || k == 'l')
			a[2] += 1;
		if (k == 'T' || k == 't')
			a[3] += 1;
	}

	int max = a[0];
	for (int i = 0; i < 4; i++) {

		if (max < a[i])
			max = a[i];
	}
//	for(int i=0;i<cnt;i++)
//	{
//		cout<<"GPLT";
//	}
//	a[0]-=cnt;a[1]-=cnt;a[2]-=cnt;a[3]-=cnt;
	for (int i = 0; i < max; i++) {
		if (a[0] != 0) {
			cout << "G";
			a[0]--;
		}
		if (a[1] != 0) {
			cout << "P";
			a[1]--;
		}
		if (a[2] != 0) {
			cout << "L";
			a[2]--;
		}
		if (a[3] != 0) {
			cout << "T";
			a[3]--;
		}
	}


}

 

posted @ 2023-05-11 09:04  cor0000  阅读(33)  评论(0)    收藏  举报