1 问题描述
nowcoder有两盒(A、B)乒乓球,有红双喜的、有亚力亚的……现在他需要判别A盒是否包含了B盒中所有的种类,并且每种球的数量不少于B盒中的数量,该怎么办呢?
2 思路分析
- 使用数据结构map,保存将A中字符及其个数;
- 遍历B字符串,判断遍历的字符是否在A中,即对应字符数量是否等于0,
若等于返回false;
否则,对应字符数量–
3.直到遍历到B字符串结尾处,返回true
3 牛客链接:乒乓球框OJ
4 代码实现
#include<iostream>
#include<map>
#include<string>
using namespace std;
bool Include(string A,string B)
{
//1.将A中字符及其个数保存在map中
map<char,int> mA;
for(int i=0;i<A.size();++i)
{
mA[A[i]]++;
}
//2.遍历B字符串,若其在A中,判断对应字符数量是否等于0,若等于返回false,否则,对应字符数量--
for(int i=0;i<B.size();++i)
{
if(mA[B[i]]==0)
return false;
else
mA[B[i]]--;
}
return true;
}
int main()
{
string A;
string B;
while(cin>>A>>B)
{
if(Include(A,B))
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
return 0;
}