到底买不买
使用int[128]数组记录每种字符(颜色)的数量,直接将字符的值作为索引。
只用一个数组来记录。第一行记录的时候增加计数,第二行记录的时候减少计数。那么正数表示这种颜色足够,负数表示这种颜色不足。
将正数和负数分别累加。如果缺少的数量累计值为0,说明足够——可以买,否则缺少的值表示缺少了多少珠子。
#include <stdio.h>
int main()
{
char str1[1000],str2[1000];
int i = 0,cnt1[1000],cnt2[1000];
int yes = 0,no = 0;
scanf("%s%s",str1,str2);
while(str1[i]!='\0')
{
cnt1[str1[i]-'0']++;
i++;
}
i = 0;
while(str2[i]!='\0')
{
cnt2[str2[i]-'0']++;
i++;
}
int flag = 1;
int fh = 0;
for(i = 0;i<97;i++)
{
fh = cnt1[i]-cnt2[i];
if(fh<0)
{
flag = 0;
no += -fh;
}
else
{
yes += fh;
}
}
if(flag == 1)
{
printf("Yes %d",yes);
}
else if(flag==0)
{
printf("No %d",no);
}
return 0;
}