欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

pat-B1043-输出PATest

程序员文章站 2024-03-22 09:14:58
...

题目链接->link

思路

  1. 遍历str,避免多个if判断,设置字典dict[6]存储P,A,T,e,s,t,用int型hashmap[6]存储对于字符的数目,用sum存储总数。
  2. 进行sum次遍历hashmap输出对于字典的字母即可。

代码

#include <stdio.h>
#include <math.h>
#include <string.h>
#include <iostream>

using namespace std;
const int maxn=10005;
char str[maxn];
char dict[6]={'P','A','T','e','s','t'};//字典,避免多个if判断
int hashmap[6]={0};

int main(){
    fgets(str, maxn, stdin);
    int sum=0,len=strlen(str);
    for(int i=0;i<len;i++){//遍历str[]
        for(int j=0;j<6;j++){//遍历dict[]
            if(str[i]==dict[j]){
                hashmap[j]++;//对于字母数+1
                sum++;//总数目+1
            }
        }
    }
    while(sum){//根据总数目输出
        for(int i=0;i<6;i++){//遍历hashmap[]
            if(hashmap[i]){
                printf("%c",dict[i]);
                hashmap[i]--;
                sum--;
            }
        }
    }
    printf("\n");
    return 0;
}


相关标签: 散列