题目链接
解题思路
使用一个int型数组表示128个ASCII码,然后,遍历shop字符串,每个对应加一,遍历eva的字符串,对应减一,最后遍历ans数组,分别用z,f变量表示多余的珠子和缺少珠子的个数。
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| #include <cstdio> #include <cstring> const int maxn=1000; int ans[128]; char shop[maxn],eva[maxn];
int main(){ scanf("%s",shop); scanf("%s",eva); memset(ans,0,sizeof(ans)); int l1=strlen(shop); int l2=strlen(eva); for(int i=0;i<l1;i++) ans[shop[i]]++; for(int i=0;i<l2;i++) ans[eva[i]]--; int z=0,f=0; for(int i=0;i<128;i++){ if (ans[i]>0) z+=ans[i]; if (ans[i]<0) f+=ans[i]; } if (f<0) printf("No %d",-f); else printf("Yes %d",z); return 0; }
|