查看原题目请点我这里
解题思路
主要是散列,其次是对比将不足的记为负数。

#include<cstdio>
#include<cstring>
const int maxn=1005;
int arr[80]={0};
int main(){
    char str[maxn],stt[maxn];
    scanf("%s%s",str,stt);
    int len1=strlen(str);
    int len2=strlen(stt);
    for(int i=0;i<len1;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 if(str[i]>='A'&&str[i]<='Z'){
            arr[str[i]-'A'+36]++;
        }
    }
    for(int i=0;i<len2;i++){
        if(stt[i]>='0'&&stt[i]<='9'){
            arr[stt[i]-'0']--;
        }else if(stt[i]>='a'&&stt[i]<='z'){
            arr[stt[i]-'a'+10]--;
        }else if(stt[i]>='A'&&stt[i]<='Z'){
            arr[stt[i]-'A'+36]--;
        }
    }
    int cntz=0,cntf=0;
    for(int i=0;i<80;i++){
        if(arr[i]>0) cntz+=arr[i];
        else if(arr[i]<0) cntf+=(-arr[i]);
    }
    if(cntf>0) printf("No %d",cntf);
    else printf("Yes %d",cntz);
    return 0;
}