【PAT甲级】1092 To Buy or Not to Buy (20 分)

题意:

输入两行字符串,如果第二行字符串包含于第一行字符串,输出"Yes"以及第一行字符串减去第二行字符串剩余的字符个数,否则输出"No"以及第二行字符串中不在第一行字符串中的字符个数(同一字符可能出现多次,对个数敏感)。

AAAAAccepted code:

 1 #define HAVE_STRUCT_TIMESPEC
 2 #include<bits/stdc++.h>
 3 using namespace std;
 4 string s1,s2;
 5 int num[307],vis[307];
 6 int main(){
 7     ios::sync_with_stdio(false);
 8     cin.tie(NULL);
 9     cout.tie(NULL);
10     cin>>s1>>s2;
11     int sum=0;
12     for(int i=0;i<s2.size();++i){
13         ++num[s2[i]-'0'];
14         vis[s2[i]-'0']=1;
15     }
16     int cnt=0;
17     for(int i=0;i<s1.size();++i){
18         if(vis[s1[i]-'0']){
19             if(num[s1[i]-'0']>0)
20                 --num[s1[i]-'0'];
21             else
22                 ++cnt;
23         }
24         else
25             ++cnt;
26     }
27     int flag=0;
28     for(int i=0;i<300;++i)
29         if(num[i]>0)
30             flag+=num[i];
31     if(flag)
32         cout<<"No "<<flag;
33     else
34         cout<<"Yes "<<cnt;
35     return 0;
36 }

 

 

 

posted @ 2019-11-21 21:05  sewage  阅读(142)  评论(0编辑  收藏  举报