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

题意:

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

代码:

#define HAVE_STRUCT_TIMESPEC
#include<bits/stdc++.h>
using namespace std;
string s1,s2;
int num[307],vis[307];
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin>>s1>>s2;
int sum=0;
for(int i=0;i<s2.size();++i){
++num[s2[i]-'0'];
vis[s2[i]-'0']=1;
}
int cnt=0;
for(int i=0;i<s1.size();++i){
if(vis[s1[i]-'0']){
if(num[s1[i]-'0']>0)
--num[s1[i]-'0'];
else
++cnt;
}
else
++cnt;
}
int flag=0;
for(int i=0;i<300;++i){
if(num[i]>0){
flag+=num[i];
}
}
if(flag)
cout<<"No "<<flag;
else
cout<<"Yes "<<cnt;
return 0;
}

猜你喜欢

转载自www.cnblogs.com/ldudxy/p/11908393.html