返回信息流POJ的1002题,程序如下:
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
char maptable[]={'2','2','2','3','3','3','4','4','4','5','5','5','6','6','6','7','-1','7','7','8','8','8','9','9','9','-1'};
bool ifAlphToDec(const char& alph, char& dec)
{
if(!isalpha(alph))
return false;
else
{
dec = maptable[alph - 'A'];
return true;
}
}
int TransToStd(string& input, string& output )
{
for(int i=0; i<input.size(); ++i)
{
char digit;
if(ifAlphToDec(input[i],digit))
{
if(output.size() == 3)
output += '-';
output += digit;
}
else if(input[i] == '-')
{
continue;
}
else
{
if(output.size() == 3)
output += '-';
output += input[i];
}
}
}
int main()
{
vector<string> Output;
int num;
cin >>num;
for(int i=0; i < num; ++i)
{
string inputOneline;
string outputOneline;
cin >> inputOneline;
TransToStd(inputOneline, outputOneline);
Output.push_back(outputOneline);
}
sort(Output.begin(),Output.end());
// output
int dupnum = 1;
vector<string>::iterator iter = Output.begin();
bool Hasdup = false;
while(iter != Output.end())
{
if((iter+1 != Output.end())&&(*iter == *(iter+1)))
{
dupnum++;
}
else
{
if(dupnum > 1)
{
cout << *iter << " " << dupnum << endl;
Hasdup = true;
dupnum = 1;
}
}
iter++;
}
if(!Hasdup)
cout << "No duplicates." <<endl;
//system("pause");
return 0;
}
这是一条镜像帖。来源:北邮人论坛 / cpp / #75232同步于 2013/11/16
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
帮忙看看,程序中哪里应该优化一下,在poj上一直是Time Limited
chancer
2013/11/16镜像同步9 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
偷了个懒,需要outputOneline为空
【 在 deng0515001 的大作中提到: 】
: 这是哪一题?不过像 string inputOneline; string outputOneline; 这种的肯定得定义在循环外面好一点
1002
【 在 deng0515001 的大作中提到: 】
: 这是哪一题?不过像 string inputOneline; string outputOneline; 这种的肯定得定义在循环外面好一点
是不是给个短语然后转成电话号码,打印有没有重复的?
电话号码别用string存,比较会快些。而且实在没必要在接收完所有输入排序之后才能知道重复,用个hashtable不就好了?
改成c语言版本的数组就过了。。。
【 在 wuxuecheng 的大作中提到: 】
: 建议打时间戳看看哪地方耗时。另外,iter++ 可以改为++iter,迭代器的赋值还是蛮耗时的。
是改成 new string[num]了么?vector也可以写成 vector<string>(num)
你的实现有问题,存太多冗余数据了
【 在 chancer 的大作中提到: 】
: 改成c语言版本的数组就过了。。。
string ctor花费的时间不多,主要时间都在vector的push_back导致的resize上了
而且通过遍历比较string查dup也是瓶颈
【 在 wuxuecheng 的大作中提到: 】
: 好吧,string的构造,析构看来不容忽视啊