原文链接:http://codeforces.com/problemset/problem/43/B
思路:大意就是能不能用给定的字符串S1中的所有字符构成另一个字符串S2。只需要统计S1中每个字符出现的频率次数,在构造第二个串S2时,判断由S1提供的字符够不够用即可。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<string>
using namespace std;
int len1,len2,num,flag=1,word[210];
int main()
{
string s1,s2;
getline(cin,s1);
getline(cin,s2);
memset(word,0,sizeof(word));
len1=s1.size();
len2=s2.size();
for(int i=0;i<len1;i++)//统计s1上字符串中字符各个字符出现的数量
{
num=s1[i]-'A';
if(num>=0)
{
word[num]++;
//cout<<num<<' '<<word[num]<<endl;
}
}
for(int i=0;i<len2;i++)//查看所需要表达的字符串各个字符出现的数量
{
num=s2[i]-'A';
if(num>=0)
{
word[num]--;//查看s1中各个字符的数量是否满足要表达的字符串s2的字符数量
//cout<<num<<' '<<word[num]<<endl;
}
if(word[num]<0)//不满足直接跳出循环
{
flag=0;
break;
}
}
if(flag)
printf("YES\n");
else
printf("NO\n");
return 0;
}