PTA甲级考试真题练习92——1092 To Buy or Not to Buy

题目

在这里插入图片描述

思路

使用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;
}
发布了153 篇原创文章 · 获赞 4 · 访问量 3799

猜你喜欢

转载自blog.csdn.net/qq_43647628/article/details/105408044