| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
我用的map<string ,int > ,结果TLE,是不是因为字符串的匹配比较耗时?#include <iostream>
#include <cstdlib>
#include <string>
#include <map>
using namespace std;
map<string,int> telebook;
map<string,int>::iterator it;
string tran(string & s1)
{
char tmp[8];
char * s = new char[s1.length()+1];
s[s1.length()] = 0;
for (int a = 0; a < s1.length(); a++)
s[a] = s1[a];
for (int i = 0, j = 0; i < s1.length(); i++)
{
if (j == 3)
tmp[j++] = '-';
switch (s[i]) {
case 'A': case 'B': case 'C':
tmp[j] = '2';
j++;
break;
case 'D': case 'E': case 'F':
tmp[j] = '3';
j++;
break;
case 'G': case 'H': case 'I':
tmp[j++] = '4';
break;
case 'J': case 'K': case 'L':
tmp[j++] = '5';
break;
case 'M': case 'N': case 'O':
tmp[j++] = '6';
break;
case 'P': case 'R': case 'S':
tmp[j++] = '7';
break;
case 'T': case 'U': case 'V':
tmp[j++] = '8';
break;
case 'W': case 'X': case 'Y':
tmp[j++] = '9';
break;
default:
if (s[i] != '-')
tmp[j++] = s[i];
break;
};
}
string s2(&tmp[0],&tmp[8]);
s1 = s2;
return s;
}
int main()
{
string s;
int n;
int i;
cin >> n;
for (i = 0; i < n; i++)
{
cin >> s;
tran(s);
telebook[s]++;
}
bool dup = false;
for (it = telebook.begin(); it != telebook.end(); it++)
{
if ((*it).second > 1)
{
cout << (*it).first << ' ' << (*it).second << endl;
dup = true;
}
}
if( dup == false )
cout << "No duplicates." << endl ;
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator