北大ACM题目(1002) 代码C++

北大ACM题目(1002) 代码C++

/*	
	Memory 5124  Time 1188MS
*/
#include <iostream>
#include <map>
#include <string>
#include <ctype.h>
#include <algorithm>

using namespace std;

int main()
{
	char a[] = { '2','2','2','3','3','3','4','4','4','5','5','5','6','6','6','7','7','7','7','8','8','8','9','9','9', '9'};
	int times;
	int index;
	int repeat = 0;
	string number;
	map<string, int> duplicates;
	map<string, int>::const_iterator beg;
	
	cin >> times;
	for (int i = 0; i < times; ++i)
	{
		cin >> number;
		number.erase(std::remove(number.begin(), number.end(), '-'), number.end());
		for (int j = 0; j < number.length(); ++j)
		{
			if (isalpha(number[j]))
			{
				index = number[j] - 'A';
				number[j] = a[index];
			}
		}
		number.insert(3,"-");
		duplicates[number]++;
	}
	for (beg = duplicates.begin(); beg != duplicates.end(); ++beg)
	{
		if (beg->second > 1)
		{
			cout << beg->first << " " << beg->second << endl;
			repeat = 1;
		}
		
	}
	if (!repeat)
		cout << "No duplicates." << endl;
	return 0;
}

猜你喜欢

转载自blog.csdn.net/David_TD/article/details/83655221