题目解析
本题是一道逻辑模拟题。
主要难点在于细节把握,有如下细节
- 日志中如果同一客户、同一计费因子、在相同时间戳上报多次话单只能计费一次,选先上报的日志计费。
- 计费因子查不到时认为计费因子单价是0
- 计费时长(范围为0-100,当计费时长不在范围内要认为是计费日志有问题,当成计费为 0 处理)
- 输出按客户标识字典序升序排序
对于1,其实就是让我们去除客户的重复日志信息,而日志是否重复的判断标准是:
同一客户、同一计费因子、相同时间戳
因此根据第 2 到 n+1 行输入的日志信息,一旦后面的日志和前面的日志上面三要素相同,则后面的日志就是重复的,可以忽略。
具体去重实现,针对不同语言有不同办法,大家可以看下面源码的具体实现。
对于2,即某个客户名下某个日志的计费因子不存在(即不存在于第 n+3 到 n+3+m 行),那么此时计费因子单价为0,即对应日志不产生费用。
对于3,需要我们日志的计算时长进行范围判断,如果不在指定范围,则对应日志不产生费用。
对于4,输出按客户标识字典序升序排