題目來源java
給定一個長度不超過 104 的、僅由英文字母構成的字符串。請將字符從新調整順序,按 PATestPATest....
這樣的順序輸出,並忽略其它字符。固然,六種字符的個數不必定是同樣多的,若某種字符已經輸出完,則餘下的字符仍按 PATest 的順序打印,直到全部字符都被輸出。ios
輸入在一行中給出一個長度不超過 104 的、僅由英文字母構成的非空字符串。c++
在一行中按題目要求輸出排序後的字符串。題目保證輸出非空。spa
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; }