PAT1039 乙级

运用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;
}

猜你喜欢

转载自blog.csdn.net/qq_42673507/article/details/85067405
今日推荐