标签:turn tap const 英文字母 ons href 个数 空字符串 分析
给定一个长度不超过 104 的、仅由英文字母构成的字符串。请将字符重新调整顺序,按 PATestPATest....
这样的顺序输出,并忽略其它字符。当然,六种字符的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按 PATest 的顺序打印,直到所有字符都被输出。
输入在一行中给出一个长度不超过 104 的、仅由英文字母构成的非空字符串。
在一行中按题目要求输出排序后的字符串。题目保证输出非空。
redlesPayBestPATTopTeePHPereatitAPPT
PATestPATestPTetPTePePee
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main() {
const string pat = "PATest";
const int size = 6;
vector<int> arr(6);
string str;
cin >> str;
// 记录PATest出现的次数
for (int i = 0; i < str.size(); ++i) {
char c = str[i];
for (int j = 0; j < size; ++j) {
if (c == pat[j]) {
arr[j]++;
}
}
}
// 记录出现次数最少的,次数最多的
int min = arr[0];
int max = arr[0];
for (int i = 1; i < size; ++i) {
if (arr[i] <= min) {
min = arr[i];
}
if (arr[i] >= max) {
max = arr[i];
}
}
// 可以组成min个PATest字符串
for (int i = 0; i < min; ++i) {
cout << "PATest";
for (int j = 0; j < size; ++j) {
arr[j]--;
}
}
// 按PATest的顺序,输出剩下的字符串
// 每输出一次,对应的数量就-1
// 数量为0的就不输出
for (int i = 0; i < max; ++i) {
for (int j = 0; j < size; ++j) {
if (arr[j] != 0) {
arr[j]--;
cout << pat[j];
}
}
}
return 0;
}
标签:turn tap const 英文字母 ons href 个数 空字符串 分析
原文地址:https://www.cnblogs.com/47Pineapple/p/12828972.html