题目
思路
使用map存储第一个字符串的char和次数,然后遍历第二个字符串的时候去map中寻找,如果找到次数减1,如果次数为0或找不到则need+1,如果need大于0则No,否则输出map中剩余的长度。
代码
#include <iostream>
#include <unordered_map>
using namespace std;
const int nmax = 100005;
unordered_map<char,int> one;
int main()
{
int len = 0;
char tmp = getchar();
int need = 0;
int duo = 0;
while (tmp!='\n') {
auto p = one.find(tmp);
if (p != one.end())
p->second++;
else
one.insert(pair<char,int>(tmp,1));
len++;
tmp = getchar();
}
tmp = getchar();
while (tmp != '\n') {
auto p = one.find(tmp);
if (p != one.end()) {
if (p->second > 0) {
len--;
p->second--;
}
else
need++;
}
else {
need++;
}
tmp = getchar();
}
if (need > 0) {
cout << "No " << need;
return 0;
}
cout << "Yes " << len;
return 0;
}