PAT甲级1092.

目录

A1092

题目

样例

样例1

输入:

ppRYYGrrYBR2258
YrR8RrY

输出:

Yes 8

样例2

输入:

ppRYYGrrYB225
YrR8RrY

输出:

No 2

思路和坑点

  使用map容器映射每一个字符串的字符个数,进行统计,分两种情况进行讨论即可。

AC代码

#include<bits/stdc++.h>
using namespace std;
int main(void){
#ifdef ONLINE_JUDGE
#else
    freopen("1.txt","r",stdin);
#endif
    string a,b;                                        //分别记录两个字符串 
    int ans=0,tag=1;
    getline(cin,a); getline(cin,b);
    unordered_map<char,int> shop,eva;                   //使用map统计字符的个数 
    for(int i=0;i<a.size();i++)
        shop[a[i]]++;
    for(int i=0;i<b.size();i++)
        eva[b[i]]++;        
    for(auto it=eva.begin();it!=eva.end();it++){        //遍历eva的map容器,如果商店提供的不够,tag为0,表示不够 
        int s=shop[it->first],e=it->second;
        if(s<e){
            tag=0; ans+=(e-s);                          //统计不够的数量 
        }
    }
    if(tag) {                                           //如果够了计算多购买的个数 
        printf("Yes ");
        ans=a.size()-b.size();
    }
    else printf("No ");
    printf("%d",ans);
    return 0;
}