水題 ZOJ
阿新 • • 發佈:2018-12-29
題目描述:
讀入一個字串,字串中包含ZOJ三個字元,個數不一定相等,按ZOJ的順序輸出,當某個字元用完時,剩下的仍然按照ZOJ的順序輸出。
輸入描述:
每組用例佔一行,包含ZOJ三個字元。 1<=length<=100。
輸出描述:
對於每組輸入,請輸出一行,表示按照要求處理後的字串。 具體可見樣例。
輸入樣例:
ZZOOOJJJ
輸出樣例:
ZOJZOJOJ
解題思路:
這道水題跟一道PAT乙級題一樣的,友情連結:有幾個PAT。建立一個map來記錄每種字元有多少個,然後用while和if來操作,讓程式按 ZOJZOJ ....
這樣的順序輸出。若某種字元已經輸出完,則餘下的字元仍按 ZOJ 的順序列印,直到所有字元都被輸出。
AC程式碼:
#include <bits/stdc++.h> using namespace std; int main() { string s; cin >> s; map<char,int> m; //用來記錄字元數 for(auto it : s) { m[it]++; } while(m['Z']||m['O']||m['J']) //若某種字元已經輸出完,則餘下的字元仍按 ZOJ 的順序列印,直到所有字元都被輸出 { if(m['Z']) { cout << 'Z'; m['Z']--; } if(m['O']) { cout << 'O'; m['O']--; } if(m['J']) { cout << 'J'; m['J']--; } } return 0; }