L1-023. 输出GPLT

    xiaoxiao2021-03-25  156

    本题要求:

    给定一个长度不超过10000的、仅由英文字母构成的字符串。请将字符重新调整顺序,按“GPLTGPLT....”这样的顺序输出,并忽略其它字符。当然,四种字符(不区分大小写)的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按GPLT的顺序打印,直到所有字符都被输出。

    输入格式:

    输入在一行中给出一个长度不超过10000的、仅由英文字母构成的非空字符串。

    输出格式:

    在一行中按题目要求输出排序后的字符串。题目保证输出非空。

    输入样例:

    pcTclnGloRgLrtLhgljkLhGFauPewSKgt

    输出样例:

    GPLTGPLTGLTGLGLL

    解题思路 :

    用数组记录题目所要求的字符个数,遍历完原字符串,遍历顺序遍历数组,知道数组内所有元素都为0。

    代码 :

    #include<iostream> using namespace std; int main() { char str[10001]; int num[4] = {0}; cin >> str; for (int i = 0; str[i] != '\0'; i++) { switch(str[i]) { case 'G': case 'g': num[0]++; break; case 'P': case 'p': num[1]++; break; case 'L': case 'l': num[2]++; break; case 'T': case 't': num[3]++; break; } } bool flag = true; while(flag) { flag = false; for (int i = 0; i < 4; i++) { if (num[i] != 0) { switch(i) { case 0: cout << 'G'; break; case 1: cout << 'P'; break; case 2: cout << 'L'; break; case 3: cout << 'T'; break; } flag = true; num[i]--; } } } cout << endl; return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-6017.html

    最新回复(0)