1039 到底买不买
到底
2023-09-14 09:15:02 时间
1039 到底买不买
分数 20
作者 CHEN, Yue
单位 浙江大学
小红想买些珠子做一串自己喜欢的珠串。卖珠子的摊主有很多串五颜六色的珠串,但是不肯把任何一串拆散了卖。于是小红要你帮忙判断一下,某串珠子里是否包含了全部自己想要的珠子?如果是,那么告诉她有多少多余的珠子;如果不是,那么告诉她缺了多少珠子。
为方便起见,我们用[0-9]、[a-z]、[A-Z]范围内的字符来表示颜色。例如在图1中,第3串是小红想做的珠串;那么第1串可以买,因为包含了全部她想要的珠子,还多了8颗不需要的珠子;第2串不能买,因为没有黑色珠子,并且少了一颗红色的珠子。
图 1
输入格式:
每个输入包含 1 个测试用例。每个测试用例分别在 2 行中先后给出摊主的珠串和小红想做的珠串,两串都不超过 1000 个珠子。
输出格式:
如果可以买,则在一行中输出 Yes 以及有多少多余的珠子;如果不可以买,则在一行中输出 No 以及缺了多少珠子。其间以 1 个空格分隔。
输入样例 1:
ppRYYGrrYBR2258
YrR8RrY
输出样例 1:
Yes 8
输入样例 2:
ppRYYGrrYB225
YrR8RrY
输出样例 2:
No 2
代码长度限制
16 KB
时间限制
150 ms
内存限制
64 MB
C++ (g++)
思路:
还是map数组的利用,先对卖的珠子进行遍历,出现一次则map++;
然后对自己要串的珠子进行遍历,出现 次数大于1,那么cnt–,如果没有出现,那么cnt1++;
cnt 初始为s1的长度,cnt1初始为0。分别代表多余的数量和缺少的数量。
用flag标志缺不缺珠子。
最后输出即可。
AC代码:
#include<bits/stdc++.h>
using namespace std;
map<char,int>mp;
int main(){
string s1,s2;
cin>>s1>>s2;
int cnt=s1.size();
int cnt1=0;
bool flag=true;
for(int i=0;i<s1.size();i++) mp[s1[i]]++;
for(int i=0;i<s2.size();i++){
if(mp[s2[i]]>=1) mp[s2[i]]--,cnt--;
else flag=false,cnt1++;
}
if(flag) cout<<"Yes "<<cnt;
else cout<<"No "<<cnt1;
return 0;
}
相关文章
- CTO问我Pulsar到底能不能取代Kafka
- 数字孪生到底还有多大的潜力?
- 【shell编程扫盲系列】结合真实案例分析“bash shell -e”到底是啥意思?
- 一辆车到底需要多少芯片?
- PID到底是个啥?给你讲个故事,通俗易懂
- 数据库索引,到底是什么做的详解数据库
- 漫画赏析:Linux 内核到底长啥样
- Unity 8 和 Windows Continuum,两大跨平台系统到底有何不同
- 到底要不要注射新冠疫苗加强针?美国CDC周五将开会讨论
- Linux版本号一览:从0.01到5.10,到底有何不同?(linux版本号)
- 探究Oracle:这个软件公司到底专注于什么领域?(oracle是做什么的)
- 自然人机交互到底“自然”在哪儿?| 雷锋网公开课(附视频)