PAT-A1092投慈,題目地址:https://www.patest.cn/contests/pat-a-practise/1092
可以理解為比較字符串不同(無(wú)序)的題目,需要首先將兩個(gè)字符串分別遍歷一次兵罢,分別記錄每個(gè)字符串中各個(gè)字符的數(shù)量,然后分別比較每個(gè)字符串?dāng)?shù)量的多少,對(duì)于每個(gè)字符(珠子)掠抬,如果“需要”的比“賣(mài)”的多,則missing增加校哎,如果“需要”的比賣(mài)的“少”两波,則extra增加。詳見(jiàn)代碼
#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]; //賣(mài)的珠子
char mine[1000]; //需要的珠子
int shop_count[62] = {0}; //記錄賣(mài)的珠子中每個(gè)顏色的數(shù)量闷哆,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;
}