1039. 到底买不买(20)
来源:互联网 发布:这就是命 网络歌手 编辑:程序博客网 时间:2024/06/06 23:50
小红想买些珠子做一串自己喜欢的珠串。卖珠子的摊主有很多串五颜六色的珠串,但是不肯把任何一串拆散了卖。于是小红要你帮忙判断一下,某串珠子里是否包含了全部自己想要的珠子?如果是,那么告诉她有多少多余的珠子;如果不是,那么告诉她缺了多少珠子。
为方便起见,我们用[0-9]、[a-z]、[A-Z]范围内的字符来表示颜色。例如在图1中,第3串是小红想做的珠串;那么第1串可以买,因为包含了全部她想要的珠子,还多了8颗不需要的珠子;第2串不能买,因为没有黑色珠子,并且少了一颗红色的珠子。
输入格式:
每个输入包含1个测试用例。每个测试用例分别在2行中先后给出摊主的珠串和小红想做的珠串,两串都不超过1000个珠子。
输出格式:
如果可以买,则在一行中输出“Yes”以及有多少多余的珠子;如果不可以买,则在一行中输出“No”以及缺了多少珠子。其间以1个空格分隔。
输入样例1:ppRYYGrrYBR2258YrR8RrY输出样例1:
Yes 8输入样例2:
ppRYYGrrYB225YrR8RrY输出样例2:
No 2
//使用map键值对保存每一个字符串中每个字符的出现个数,然后遍历第二个字符串,如果其中有字符的个数比第一个字符串中对应的个数多,说明缺少珠子,把差额累加并把结果置为no
//最后如果为yes,说明所有的颜色都不缺珠子,则剩余的是两个字符串长度之差,如果为no,缺少的是累加的差额。
#include<iostream>
#include<string>
#include<map>
using namespace std;
int main()
{
map<char,int> m1,m2;
string s1,s2;
cin>>s1>>s2;
int l1=s1.length();
int l2=s2.length();
for(int p=0;p<l1;p++)
{
char c=s1[p];
map<char,int>::iterator it;
it=m1.find(c);
if(it==m1.end())
{
m1.insert(pair<char,int>(c,1));
}
else
{
m1[c]++;
}
}
for(int p=0;p<l2;p++)
{
char c=s2[p];
map<char,int>::iterator it;
it=m2.find(c);
if(it==m2.end())
{
m2.insert(pair<char,int>(c,1));
}
else
{
m2[c]++;
}
}
string flag="Yes";
int a=0;
map<char,int>::iterator it;
for(it=m2.begin();it!=m2.end();it++)
{
char cc=it->first;
int ii=it->second;
//cout<<cc<<":"<<ii<<"-"<<m1[cc]<<endl;
if(ii>m1[cc])
{
flag="No";
a=a+(ii-m1[cc]);
}
}
if(flag=="Yes")
{
cout<<flag<<" "<<(l1-l2);
}
if(flag=="No")
{
cout<<flag<<" "<<a;
}
return 0;
}
#include<string>
#include<map>
using namespace std;
int main()
{
map<char,int> m1,m2;
string s1,s2;
cin>>s1>>s2;
int l1=s1.length();
int l2=s2.length();
for(int p=0;p<l1;p++)
{
char c=s1[p];
map<char,int>::iterator it;
it=m1.find(c);
if(it==m1.end())
{
m1.insert(pair<char,int>(c,1));
}
else
{
m1[c]++;
}
}
for(int p=0;p<l2;p++)
{
char c=s2[p];
map<char,int>::iterator it;
it=m2.find(c);
if(it==m2.end())
{
m2.insert(pair<char,int>(c,1));
}
else
{
m2[c]++;
}
}
string flag="Yes";
int a=0;
map<char,int>::iterator it;
for(it=m2.begin();it!=m2.end();it++)
{
char cc=it->first;
int ii=it->second;
//cout<<cc<<":"<<ii<<"-"<<m1[cc]<<endl;
if(ii>m1[cc])
{
flag="No";
a=a+(ii-m1[cc]);
}
}
if(flag=="Yes")
{
cout<<flag<<" "<<(l1-l2);
}
if(flag=="No")
{
cout<<flag<<" "<<a;
}
return 0;
}
0 0
- 1039. 到底买不买(20)
- 1039. 到底买不买(20)
- 1039. 到底买不买(20)
- 1039. 到底买不买(20)
- 1039. 到底买不买(20)
- 1039. 到底买不买(20)
- 1039. 到底买不买(20)
- 1039. 到底买不买(20)
- 1039. 到底买不买(20)
- 1039. 到底买不买(20)
- 1039. 到底买不买(20)
- 1039. 到底买不买(20)
- 1039. 到底买不买(20)
- 1039. 到底买不买(20)
- 1039. 到底买不买(20)
- 1039. 到底买不买(20)
- 1039. 到底买不买(20)
- 1039. 到底买不买(20)
- libc++ hashtable 源码简析
- 大话机器学习(二)--KNN
- Linux下nodejs安装express
- [Spring实战系列](3)开启Spring之门
- Android 原生导航 III-Drawer导航
- 1039. 到底买不买(20)
- poj1287 Networking
- 1040. 有几个PAT(25)
- Service 组件在新进程中的启动及在进程内的绑定过程
- ubuntu 下win7引导修复
- 多核程序设计的相关基础知识----以误差扩散算法为例
- Tango学习笔记(二)
- camp 没有搞的
- JPA,带你入门