zoukankan      html  css  js  c++  java
  • PAT乙级真题 | 1043 输出PATest

    1043 输出PATest

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

    输入格式:

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

    输出格式:

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

    输入样例:

    redlesPayBestPATTopTeePHPereatitAPPT
    

    输出样例:

    PATestPATestPTetPTePePee
    
    作者: CHEN, Yue
    单位: 浙江大学
    时间限制: 400 ms
    内存限制: 64 MB
    代码长度限制: 16 KB
     
     
    思路:  1、接收字符串
         2、遍历字符串,使用计数数组,分别对 'P' 'A' 'T' 'e' 's' 't' 这几个字符进行计数
         3、根据计数数组,按顺序分别输出'P' 'A' 'T' 'e' 's' 't' (重复循环),若计数为0则不输出,直到计数数组全为零,停止输出
     
     
    实现代码:
     1 /---------C语言实现--------/
     2 #include <stdio.h>
     3 
     4 int main(void)
     5 {
     6     char inputStr[10005];                //测试样例
     7     int count[6] = { 0 };                //计数数组,每一位分别对应'P' 'A' 'T'...的数量 
     8     char outputStr[6] = {"PATest"};        //输出用字符数组 
     9     int i;
    10     
    11     gets(inputStr);
    12     
    13     //接受字符串,遍历字符串,更新计数数组 
    14     for (i = 0; inputStr[i] != ''; i++)
    15     {
    16         switch (inputStr[i])
    17         {
    18             case 'P':
    19                 count[0]++;
    20                 break;
    21             case 'A':
    22                 count[1]++;
    23                 break;
    24             case 'T':
    25                 count[2]++;
    26                 break;
    27             case 'e':
    28                 count[3]++;
    29                 break;
    30             case 's':
    31                 count[4]++;
    32                 break;
    33             case 't':
    34                 count[5]++;
    35                 break;
    36             default:
    37                 break;
    38         }
    39     }
    40     
    41     i = 0;        //初始化计数变量 、
    42     
    43     //循环条件:计数数组各元素不同时为零,"!(同时为零)" 即是 "不同时为零" 
    44     while (!(count[0] == 0 && count[1] == 0 && count[2] == 0 && 
    45                 count[3] == 0 && count[4] == 0 && count[5] == 0))
    46     {
    47         if (count[i] > 0)
    48         {
    49             printf("%c", outputStr[i]);    //输出对应位置上的字符 
    50             count[i]--;
    51         }
    52         
    53         //i等于5时已遍历到末尾,更新计数变量回到初始位置 
    54         if (i == 5)
    55         {
    56             i = 0;
    57         }
    58         else    //未到末尾则继续向后遍历 
    59         {
    60             i++;
    61         }
    62     }
    63     
    64     return 0;
    65 }
  • 相关阅读:
    Django多表操作
    Django单表操作
    Django模板语言的复用
    DTL
    Django视图层、虚拟环境
    Django路由详解
    初识Django
    web框架
    JQ初级
    linux的基础配置命令
  • 原文地址:https://www.cnblogs.com/DylanLiuH2O/p/11191661.html
Copyright © 2011-2022 走看看