1092. To Buy or Not to Buy (20)

PAT-A1092,题目地址:https://www.patest.cn/contests/pat-a-practise/1092
可以理解为比较字符串不同(无序)的题目,需要首先将两个字符串分别遍历一次,分别记录每个字符串中各个字符的数量,然后分别比较每个字符串数量的多少,对于每个字符(珠子),如果“需要”的比“卖”的多,则missing增加,如果“需要”的比卖的“少”,则extra增加。详见代码

#include <cstdio>
#include <cstring>

void check_char(int* count, char ch){
    if(ch >= '0' && ch <= '9'){
        count[ch - '0']++;
    }
    else if(ch >= 'a' && ch <= 'z'){
        count[ch - 'a' + 10]++;
    }
    else if(ch >= 'A' && ch <= 'Z'){
        count[ch - 'A' + 10 + 26]++;
    }
}

int main(){
    char shop[1000]; //卖的珠子
    char mine[1000]; //需要的珠子
    int shop_count[62] = {0}; //记录卖的珠子中每个颜色的数量,0-9,a-z,A-Z
    int mine_count[62] = {0};//记录需要的珠子
    scanf("%s %s", shop, mine);
    int shop_length = strlen(shop);
    int mine_length = strlen(mine);

    for(int i = 0; i < shop_length; i++){
        check_char(shop_count, shop[i]);
    }
    for(int i = 0; i < mine_length; i++){
        check_char(mine_count, mine[i]);
    }
    int extra = 0, missing = 0;
    for(int i = 0; i < 62; i++){
        if(shop_count[i] > mine_count[i]){
            extra += shop_count[i] - mine_count[i];
        }
        else if(shop_count[i] < mine_count[i]){
            missing += mine_count[i] - shop_count[i];
        }
        else{}
    }
    if(missing == 0){
        printf("Yes %d\n", extra);
    }
    else{
        printf("No %d\n", missing);
    }
    return 0;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容