运用map容易 复杂度nlgn
#include <iostream>
#include <map>
#include <set>
#include <string>
using namespace std;
//string 放入map
void Push_map(map<char,int>&m, const string& str) {
for (int i = 0; i < str.size(); i++) {
//若重复出现则value++
pair<map<char, int>::iterator, bool> it = m.insert(make_pair(str.at(i),1));
//存在key值
if (it.second == false) {
map<char, int>::iterator ret = m.find(str.at(i));
ret->second++;
}
}
}
int main()
{
string real_color, demand_color;
cin >> real_color;
cin >> demand_color;
map<char,int>real_map;
map<char,int>demand_map;
Push_map(real_map, real_color);
Push_map(demand_map, demand_color);
int Total_lack = 0;//记录缺少个数
for (map<char, int>::iterator it = demand_map.begin(); it != demand_map.end(); it++) {
map<char, int>::iterator temp_it = real_map.find(it->first);
if (temp_it == real_map.end())
Total_lack += it->second;
else
Total_lack += it->second > temp_it->second ? it->second - temp_it->second : 0;
}
if (Total_lack)
cout << "No " << Total_lack;
else
cout << "Yes " << real_color.size() - demand_color.size();
return 0;
}