22行代码AC——L1-023 输出GPLT(~解题报告~)
生活随笔
收集整理的這篇文章主要介紹了
22行代码AC——L1-023 输出GPLT(~解题报告~)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
立志用更少的代碼做更高效的表達
給定一個長度不超過10000的、僅由英文字母構成的字符串。請將字符重新調整順序,按GPLTGPLT…這樣的順序輸出,并忽略其它字符。當然,四種字符(不區分大小寫)的個數不一定是一樣多的,若某種字符已經輸出完,則余下的字符仍按GPLT的順序打印,直到所有字符都被輸出。
輸入格式:
輸入在一行中給出一個長度不超過10000的、僅由英文字母構成的非空字符串。
輸出格式:
在一行中按題目要求輸出排序后的字符串。題目保證輸出非空。
輸入樣例:
pcTclnGloRgLrtLhgljkLhGFauPewSKgt
輸出樣例:
GPLTGPLTGLTGLGLL
解題思路
定義兩個數組, 字符數組存放GPLT, int 型數組存放他們的個數, 統計后按順序輸出即可。具體見代碼,有詳細注釋
代碼展示
#include<iostream> using namespace std; char s[4] = {'G', 'P', 'L', 'T'}; int a[4]; //記錄GPLT的個數 int main() {char c; while(scanf("%c", &c) && c!='\n') {if(c=='g' || c=='G') a[0]++;else if(c=='p' || c=='P') a[1]++;else if(c=='l' || c=='L') a[2]++;else if(c=='t' || c=='T') a[3]++;}int Max = -1;for(int i=0; i<4; i++) //Max等于GPLT中最長的長度 if(a[i]>Max) Max=a[i];if(Max == -1) return 0; //若等于-1,則證明一個也沒有,直接結束 for(int i = 0; i < Max; i++) for(int j = 0; j < 4; j++)if(a[j] != 0) {cout << s[j];a[j]--;}return 0 ; }每日一句
惟正己可以化人,唯盡己可以服人。
總結
以上是生活随笔為你收集整理的22行代码AC——L1-023 输出GPLT(~解题报告~)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 9行代码AC——L1-022 奇偶分家(
- 下一篇: 4行代码AC——L1-024 后天(5分