题目大意:
给出两串用字符串表示的珠子,看第二串里面珠子是否第一串里都有,有的话输出除了包括第二串珠子以外的其他珠子数量,否则输出缺少的珠子数量。
代码:
#include <iostream>
#include <cstdio>
#include <cstdlib>
void hash(int arr[], char str[])
{
int i;
for(i = 0; str[i] != '\0'; i++)
{
if(str[i] >= '0' && str[i] <= '9')
{
arr[str[i] - '0']++;
}
else if(str[i] >= 'a' && str[i] <= 'z')
{
arr[str[i] - 'a' + 10]++;
}
else
{
arr[str[i] - 'A' + 36]++;
}
}
return;
}
int main(int argc, char** argv) {
int origin[100] = {0}, want[100] = {0}, i, left = 0, more = 0;
char str1[1010], str2[1010];
bool flag;
scanf("%s", str1);
scanf("%s", str2);
hash(origin, str1);
hash(want, str2);
flag = true;
for(i = 0; i < 100; i++)
{
if(want[i] > origin[i])
{
flag = false;
left += want[i] - origin[i];
}
else{
more += origin[i] - want[i];
}
}
if(flag)
{
printf("%s %d", "Yes", more);
}
else
{
printf("%s %d", "No", left);
}
return 0;
}