解题思路:将字符串的ascii码作为下标,num数组记录每个字符出现的次数,遍历第二个字符串,每出现一次就减去一次。
代码如下:
#include<bits/stdc++.h>
#define lowbit(x) ((x)&(-(x)))
#define ll long long
#define INF 0x3f3f3f3f
#define N 100000
#define CLR(a) memset(a, 0, sizeof(a))
using namespace std;
int num[300];
string a,b;
int main() {
CLR(num);
cin>>a>>b;
for(int i=0;i<a.size();i++)
num[a[i]]++;
for(int i=0;i<b.size();i++)
num[b[i]]--;
int flag=0;
for(int i=0;i<300;i++){
if(num[i]<0){
flag=1;
break;
}
}
int ans=0;
if(flag){
for(int i=0;i<300;i++){
if(num[i]<0){
ans+=abs(num[i]);
}
}
printf("No %d\n",ans);
}
else{
for(int i=0;i<300;i++)
ans+=num[i];
printf("Yes %d\n",ans);
}
return 0;
}