文章
60
粉丝
361
获赞
43
访问
527.7k
定义一个类
将日志行拆分为 名称 时间 运行时间,然后进行排序
#include <bits/stdc++.h>
using namespace std;
struct T
{
string name;
string time;
string run;
}t[10000];
bool compare(T t1,T t2)
{
if(t1.run ==t2.run )
return t1.time<t2.time;
else
return t1.run<t2.run;
}
int main()
{
string s;
int cnt=0;
while(getline(cin,s))
{
if(s=="") break;
int len=s.size();
int i=0,j=0;
for(i=len-1;i>=1;i--)
{
if(s[i]!=' '&&s[i-1]==' ')
{
t[cnt].run=s.substr(i,len-i);//获取运行时间
break;
}
}
for(j=0;j<len-1;j++)
{
if(s[j]==' '&&s[j+1]!=' ')
{
t[cnt].name =s.substr(0,j+1);
t[cnt].time=s.substr(j+1,i-j-1);
break;
}
}
cnt++;//统计个数
}
sort(t,t+cnt,compare);
for (int k=0;k<cnt;k++)
{
cout<<t[k].name <<t[k].time <<t[k].run <<endl;
}
//system("pause");
return 0;
}
登录后发布评论
如果输入头部有空格,下面这段代码有问题吧
compare函数应该改一下,否则只能通过75%,如下:
bool compare(T t1,T t2)
{
if(t1.run ==t2.run )
return t1.time<t2.time;
else if(t1.run.size() != t2.run.size())
return t1.run.size() < t2.run.size();
else
return t1.run<t2.run;
}