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;
}