美文网首页PAT
1043. 输出PATest(20)

1043. 输出PATest(20)

作者: tingshuo123 | 来源:发表于2017-09-24 11:26 被阅读3次

    描述

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

    输入格式:

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

    输出格式:

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

    输入样例:

    redlesPayBestPATTopTeePHPereatitAPPT

    输出样例:

    PATestPATestPTetPTePePee

    思路:用数组按"PATest"的顺序记录字母个数,然后顺序输出字符,并将字符个数减1,个数为零不打印,全部为零退出。
    C语言:

    #include <stdio.h>
    #include <stdlib.h>
    #define max_size 10001
    
    void transform(int arr[], char ch);
    
    int main(void)
    {
        char *str = (char *)malloc(sizeof(char) * max_size);
        scanf("%s", str);
        int A[6] = {0};
        const char S[6] = {'P', 'A', 'T', 'e', 's', 't'};
        int i;
        for (i=0; str[i]; i++){
            transform(A, str[i]);
        }
    //  for (i=0; i<6; i++){
    //      printf("A[%d] = %d: ", i, A[i]);
    //      printf("%c\n", S[i]);
    //  }
        int flag = 1;
        while (flag == 1){
            flag = 0;
            for (i=0; i<6; i++){
                if (A[i] > 0){
                    printf("%c", S[i]);
                    A[i]--;
                    flag = 1;
                }
            }
        }
        
        return 0;
    }
    
    void transform(int arr[], char ch)
    {
        switch (ch){
            case 'P': arr[0]++; break;
            case 'A': arr[1]++; break;
            case 'T': arr[2]++; break;
            case 'e': arr[3]++; break;
            case 's': arr[4]++; break;
            case 't': arr[5]++; break;
        }
    }
    

    相关文章

      网友评论

        本文标题:1043. 输出PATest(20)

        本文链接:https://www.haomeiwen.com/subject/tfrkextx.html