题目来源
题目描述
题目解析
- 把订单时间字符串(2019-01-01 00:00:00.001 ) 按小数点分为 第一部分 和第二部分,第一部分是 整数部分的字符串,第二部分是小数部分的字符串。
- 建立一个map ,以整数部分为key ,小数部分和 第一个下单的人的个数为value,记录下每秒钟第一个下单的人。
- 统计map 中所有的 每秒第一个下单的人数。
#include<bits/stdc++.h>
using namespace std;
struct Info{
int microSrc;
int count;
Info() : microSrc(0), count(0){
}
Info(int microSrc, int count) : microSrc(microSrc), count(count){
}
};
int maxCount(vector<string> &vec)
{
std::map<std::string, Info> map;
for(auto &iter : vec){
auto pos = iter.find_first_of('.', 0);
auto key = iter.substr(0, pos);
auto microSrc = stoi(iter.substr(pos + 1));
if(map.count(key)){
if(microSrc < map[key].microSrc){
map[key].count = 1;
map[key].microSrc = microSrc;
}else if(microSrc == map[key].microSrc){
map[key].count++;
}
}else{
map[key].count = 1;
map[key].microSrc = microSrc;
}
}
int count = 0;
for(auto &iter : map){
count += iter.second.count;
}
return count;
}
int main(int argc, char **argv)
{
std::vector<std::string> m{
"2019-01-01 00:00:00.001", "2019-01-01 00:00:00.002", "2019-01-01 00:00:00.003"
};
std::cout << maxCount(m);
}