一、问题描述
给定一个长度不超过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]--;
}
}
}
标签:字符,顺序,int,max,kk,5.10,打卡,建民 From: https://www.cnblogs.com/cor0000/p/17385507.html